这些线究竟意味着什么?

时间:2015-12-27 22:06:26

标签: python tkinter

从Tkinter导入所有内容后,您必须创建一个基本的空白窗口,以及该代码的用途,但每行的含义是什么?

class Window(Frame):
    def __init__(self, master=None):
        Frame.__init__(self, master)               
        self.master = master

2 个答案:

答案 0 :(得分:0)

逐行。

main.py

class Window(Frame):
    def __init__(self, master=None): # initialization: default for master is None
        Frame.__init__(self, master) # Call the parent (Frame) init method
        self.master = master # set the attribute master to self ('gui') 
gui = Window(master=something) # creates object

master是您创建对象时的参数。

答案 1 :(得分:0)

class Window(Frame):

上面的代码创建了一个新类。这个新类继承自Frame类,因此可以在任何可以使用普通Frame的地方使用。

 def __init__(self, master=None):

这是新类的初始化程序的开始。初始化器在许多方面与其他语言称为构造函数的方式类似,尽管它在技术上不是构造函数。普通Frame可以使用许多参数,但是这个子类需要两个。 self是任何python类的必需参数,并在您调用对象上的方法时自动传入。 master表示父级,除根窗口外,所有Tkinter小部件都需要父级。

奇怪的是,master的默认值为None。由于父窗口小部件不能是None,因此非常容易引起误解。如果将其设置为None,它将自动设置为根窗口。在创建此Window类的新实例时,应始终传入对父窗口的引用。

Frame.__init__(self, master) 

上面通过调用超类的初始化器完成了从Frame类继承的过程。这是实际创建您在屏幕上看到的小部件。如果没有此步骤,则不会创建任何小部件。

self.master = master

以上语句只是将master参数保存为类属性。