【发布时间】:2015-12-28 03:38:39
【问题描述】:
我想了解以下代码的含义:
class PageOne(tk.Frame):
def __init__(self, parent, controller):
什么是self、parent 和controller?这些工具在这里的作用和范围是什么?
我相信self和Java中的this类似,但是parent和controller有什么用呢?
在后面的代码流中我可以看到:
button1 = tk.Button(self, text="Back to Home",
command=lambda: controller.show_frame(StartPage))
已经定义了一个名为show_frame的函数,但是为什么要使用控制器来调用这个函数呢?
【问题讨论】:
-
它们是方法的参数。什么让你对它们感到困惑?这里
__init__没有什么特别之处,只是它是使用传递给实例化调用的参数自动调用的。 -
“我相信 self 在 Java 中类似于 this” - 是的。 “父级和控制器有什么用?” - 它们只是另外两个初始化参数。在 Tkinter 中,您通常将新小部件所在的
parent小部件传递给每个新小部件,以定义整个 UI 的树。controller显然是可以用来控制整体 UI 的东西,而不是让小部件负责全局更改。 -
@jonrsharpe:实际上,原始代码来自我 2011 年的这个答案:stackoverflow.com/a/7557028/7432。您链接到的问题是指互联网上的一个教程,该教程似乎几乎逐字复制了该答案 - 并且没有署名:-(
-
@BryanOakley 哈哈,这真的已经完成了!