tkinter的Tk和Toplevel课程有什么区别?

时间:2015-04-15 16:02:12

标签: python python-3.x tkinter

在Python 3中,我从交互式shell运行以下命令:

>>> import tkinter
>>> type(tkinter.Tk())
<class 'tkinter.Tk'>
>>> type(tkinter.Toplevel())
<class 'tkinter.Toplevel'>

这两个都创建了单独的窗口。我假设tkinter.Tk()返回&#34; main&#34; tkinter应用程序的窗口,而任何其他窗口应使用tkinter.Toplevel()创建。

我注意到,如果您关闭tkinter.Tk()窗口,两个窗口都会关闭。此外,如果您在未调用tkinter.Toplevel()的情况下致电tkinter.Tk(),则会创建两个窗口(其中一个窗口为&#34;主窗口&#34;窗口,关闭时,也会关闭Toplevel窗口)。

这准确吗?我还应该关注其他任何不同之处吗?

1 个答案:

答案 0 :(得分:11)

您的摘要准确无误。 tkinter的核心架构特征之一是小部件存在于一个只有一个根窗口的层次结构中。根窗口是您实例化Tk时获得的。

实例化Tk不仅仅是创建一个窗口,还会初始化整个tkinter框架。它实际上启动了一个隐藏的tcl解释器,它可以完成管理小部件的实际工作。 Tkinter只是这个解释器的python包装器。

如果您尝试创建其他窗口小部件而不先显式创建根窗口,则会自动创建一个窗口,因为每个tkinter应用程序必须只有一个根窗口。