4

在下面的代码中,第 5 行,Frame.__init__做什么?有人可以解释它背后的概念吗?非常感谢!

from Tkinter import *
class AppUI(Frame):

    def __init__(self, master=None):
        Frame.__init__(self, master, relief=SUNKEN, bd=2)
        [...]

编辑: 这里有正确缩进的完整代码

4

2 回答 2

12

该类AppUI基于来自 的FrameTkinter。这意味着AppUI该类是一种类型, Frame但具有一些稍微不同或定制的行为。这意味着AppUI类的方法可能需要(实际上,通常需要)从Frame类中调用代码。也就是说,AppUI想做与Frame班级相同的事情,想做其他事情。这就是这里发生的事情:当你实例化一个 时AppUI,你希望它首先被初始化Frame,然后执行特定的AppUI初始化。

这里AppUI显式调用其父类的__init__()方法。

你也可以使用这个super()函数来做到这一点——通常你会这样做;它基本上在多继承场景中是必需的。但是因为 Tkinter 使用“旧式类”,所以你必须在这里用旧的方式来做。

于 2013-09-20T19:36:28.677 回答
-3

背后的概念是 Tkinter 为菜单提供了一种特殊的小部件类型,StatusBar 继承自 Frame 小部件。当你使用它时,我认为目的是它不会增加你的附加方法与 Tkinter 使用的属性或方法冲突的风险

见:http ://effbot.org/tkinterbook/tkinter-application-windows.htm

于 2013-09-20T20:01:08.590 回答