Python 以Tkinter为例的关于课堂的基本问题
我在这里遵循教程示例: 我稍微修改了源代码(基本上是导入Tkinter,而不是从Tkinter导入*) 我意识到,如果我从Python 以Tkinter为例的关于课堂的基本问题,python,class,tkinter,frame,init,Python,Class,Tkinter,Frame,Init,我在这里遵循教程示例: 我稍微修改了源代码(基本上是导入Tkinter,而不是从Tkinter导入*) 我意识到,如果我从Tkinter.Frame.\uuu init\uuuuu(self,master)中取出master,代码仍然会运行,不仅如此,我还可以运行app=Application(root)并创建多个三重按钮 所以我的问题是: “大师”到底是干什么的 如果我从\uuuu init\uuuu(self,master)中取出master,它将给出一个关于没有足够参数的错误 另外,我不需
Tkinter.Frame.\uuu init\uuuuu(self,master)
中取出master
,代码仍然会运行,不仅如此,我还可以运行app=Application(root)
并创建多个三重按钮
所以我的问题是:
\uuuu init\uuuu(self,master)
中取出master,它将给出一个关于没有足够参数的错误app=Application(root)
,我只需要运行Application(root)
,这仍然使root.mainloop()
工作,那么app=Application(root)
的目的是什么呢感谢您按顺序回答您的问题
master
参数是每个小部件的“父小部件”,对于Tkinter.Frame
,默认为None
。注意:您将self
(即框架
)作为master
传递给每个按钮
def\uuu init\uuuu(self)
,然后调用app=Application(root)
,您将得到一个TypeError
,因为root
参数无处可去;及app=Application(root)
的要点很简单,您可以稍后访问它。您的示例很简单,没有可在\uuuu init\uuu
之外调用的实例方法,但情况可能并非总是如此class Application(Tkinter.Frame):
表示所有应用程序
类实例都从Tkinter.Frame
继承方法和属性。这与例如中的函数参数不同
def __init__(self, master):
这意味着Application.\uuuu init\uuu
接受两个参数(第一个参数在所有实例方法中按约定称为self
,是类实例本身,通常隐式传递)。当你打电话的时候
app = Application(root)
这与\uuuu init\uuuu
定义有关,并且(大致)是指
如果
\uuuu init\uuuu
没有两个参数(self
和master
),您将因此得到一个TypeError
,因为有两个参数(隐式实例self
和显式父窗口小部件master
),Python只知道如何处理其中一个参数 你能解释一下应用程序(root)吗,我的意思是,这个类被定义为类应用程序(Tkinter.Frame),它已经接受了参数“Tkinter.Frame”,将root传递给它对我来说没有什么意义。还有,你所说的根参数无处可去是什么意思?谢谢,谢谢你jonrsharpe,我仍然很困惑,但我想我对类和面向对象编程更困惑,我将不得不查看更多的教程,然后再回到这里。谢谢你的解释。
app = Application(root)
Application.__init__(app, root)