为什么要为此类初始化程序使用默认值None?

时间:2015-04-17 08:31:27

标签: python tkinter

我测试了这个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}}实例?

1 个答案:

答案 0 :(得分:2)

该类复制Frame构造函数;它采用可选的master参数。您没有 传入主窗口小部件,即使此处代码确实传入了一个。请参阅*frame sectionAn 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对象的代码。