我有两个代码 第一个:
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有什么不同。你能帮我解释一下吗?
答案 0 :(得分:0)
此代码不符合您的想法:
keyFr = Frame(self).pack(side="top")
它的作用是将keyFr
设置为None
。为什么?在python中,x().y()
返回y()
的值。因此,Frame(self).pack(side="top")
会返回pack(side="top")
的值。 pack(...)
始终返回None
,因此keyFr
为None
。
因为keyFr
为none,所以第一个代码块中的所有按钮都会被添加到根窗口而不是帧中。