python 中两个使用 pack() 的区别
Differentiation between two using pack() in python
我有两个代码如下
第一个:
from tkinter import *
root = Tk()
class App(Frame):
def __init__(self, master):
Frame.__init__(self,master)
self.pack()
for keyF in ('123','456','789','-0.'):
keyFr = Frame(self).pack(side="top")
for char in keyF:
but = Button(keyFr, text=char).pack(side='left')
App(root)
root.mainloop()
结果:
第二个密码:
from tkinter import *
root = Tk()
class App(Frame):
def __init__(self, master):
Frame.__init__(self,master)
self.pack()
for keyF in ('123','456','789','-0.'):
keyFr = Frame(self)
keyFr.pack(side="top")
for char in keyF:
but = Button(keyFr, text=char)
but.pack(side='left')
App(root)
root.mainloop()
结果:
我不知道在这些代码中使用 pack 有什么不同。你能帮我解释一下吗?
此代码与您的想法不符:
keyFr = Frame(self).pack(side="top")
它所做的是将 keyFr
设置为 None
。为什么?在python、x().y()
、returns中的值为y()
。因此,Frame(self).pack(side="top")
returns的价值pack(side="top")
。 pack(...)
总是 returns None
所以 keyFr
是 None
.
因为 keyFr
是 none,第一个代码块中的所有按钮都被添加到根部 window 而不是框架。
我有两个代码如下 第一个:
from tkinter import *
root = Tk()
class App(Frame):
def __init__(self, master):
Frame.__init__(self,master)
self.pack()
for keyF in ('123','456','789','-0.'):
keyFr = Frame(self).pack(side="top")
for char in keyF:
but = Button(keyFr, text=char).pack(side='left')
App(root)
root.mainloop()
结果:
第二个密码:
from tkinter import *
root = Tk()
class App(Frame):
def __init__(self, master):
Frame.__init__(self,master)
self.pack()
for keyF in ('123','456','789','-0.'):
keyFr = Frame(self)
keyFr.pack(side="top")
for char in keyF:
but = Button(keyFr, text=char)
but.pack(side='left')
App(root)
root.mainloop()
结果:
我不知道在这些代码中使用 pack 有什么不同。你能帮我解释一下吗?
此代码与您的想法不符:
keyFr = Frame(self).pack(side="top")
它所做的是将 keyFr
设置为 None
。为什么?在python、x().y()
、returns中的值为y()
。因此,Frame(self).pack(side="top")
returns的价值pack(side="top")
。 pack(...)
总是 returns None
所以 keyFr
是 None
.
因为 keyFr
是 none,第一个代码块中的所有按钮都被添加到根部 window 而不是框架。