我正在学习Tkinter时,看到了来自NMT Tkinter 8.5参考资料的一个最小化示例。
#!/usr/bin/env python
import tkinter as tk
class Application(tk.Frame):
def __init__(self, master=None):
tk.Frame.__init__(self, master)
self.grid()
self.createWidgets()
def createWidgets(self):
self.quitButton = tk.Button(self, text='Quit',command=self.quit)
self.quitButton.grid()
app = Application()
app.master.title('Sample application')
app.mainloop()
一切都很顺利,直到我注意到Tk
类没有被初始化。在其他我找到的在线参考资料中(包括Python库参考、effbot.org、TkDocs),通常会调用root = tk.Tk()
,然后基于此构建其他示例。同时,我也没有看到任何关于Tk
类初始化的参考资料。
我能获取关于Tk
类的信息也很模糊,Python参考仅将其列为“顶级窗口小部件...通常是应用程序的主窗口”。最后,如果我替换之前提供的片段中的最后几行:
root = tk.Tk()
app = Application(root)
这个程序将像以前一样正常运行。考虑到这一点,我感兴趣的是:
root = tk.Tk()
的调用实际上会做什么(即初始化了哪些内容),为什么之前的代码片段可以在没有它的情况下工作?- 如果我不调用
Tk()
而只是围绕Frame
类构建我的应用程序,是否会遇到任何问题或限制?