在下面的代码中,第 5 行,Frame.__init__
做什么?有人可以解释它背后的概念吗?非常感谢!
from Tkinter import *
class AppUI(Frame):
def __init__(self, master=None):
Frame.__init__(self, master, relief=SUNKEN, bd=2)
[...]
编辑: 这里有正确缩进的完整代码
在下面的代码中,第 5 行,Frame.__init__
做什么?有人可以解释它背后的概念吗?非常感谢!
from Tkinter import *
class AppUI(Frame):
def __init__(self, master=None):
Frame.__init__(self, master, relief=SUNKEN, bd=2)
[...]
编辑: 这里有正确缩进的完整代码
该类AppUI
基于来自 的Frame
类Tkinter
。这意味着AppUI
该类是一种类型, Frame
但具有一些稍微不同或定制的行为。这意味着AppUI
类的方法可能需要(实际上,通常需要)从Frame
类中调用代码。也就是说,AppUI
想做与Frame
班级相同的事情,也想做其他事情。这就是这里发生的事情:当你实例化一个 时AppUI
,你希望它首先被初始化Frame
,然后执行特定的AppUI
初始化。
这里AppUI
显式调用其父类的__init__()
方法。
你也可以使用这个super()
函数来做到这一点——通常你会这样做;它基本上在多继承场景中是必需的。但是因为 Tkinter 使用“旧式类”,所以你必须在这里用旧的方式来做。
背后的概念是 Tkinter 为菜单提供了一种特殊的小部件类型,StatusBar 继承自 Frame 小部件。当你使用它时,我认为目的是它不会增加你的附加方法与 Tkinter 使用的属性或方法冲突的风险
见:http ://effbot.org/tkinterbook/tkinter-application-windows.htm