我测试了这个answer中的代码,它运行得很好。
代码创建一个Application
类,如下所示:
class Application(Frame):
def __init__(self, master=None):
Frame.__init__(self, master)
并使用:
创建一个实例root = Tk()
app = Application(master=root)
然而,有一件事我不理解:为什么构造函数将一个无对象def __init__(self, master=None):
作为参数,但他调用Application()
类,并将root=Tk()
传递给{{1}}实例?
答案 0 :(得分:2)
该类复制Frame
构造函数;它也采用可选的master
参数。您没有 传入主窗口小部件,即使此处代码确实传入了一个。请参阅*frame
section的An introduction to Tkinter:
Frame(master=None, **options)
(上课)
小部件容器。
tkinter
documentation examples包含相同的模式:
from Tkinter import * class Application(Frame): # ... def __init__(self, master=None): Frame.__init__(self, master) self.pack() self.createWidgets() root = Tk() app = Application(master=root)
这样做可以使您的代码更加灵活;您现在可以创建一个没有master的Application
实例,并将其传递给以后可以绑定任何Tk对象的代码。