tkinter 的 Tk 和 Toplevel 类 有什么区别?
What's the difference between tkinter's Tk and Toplevel classes?
在Python3中,我运行下面的互动shell:
>>> import tkinter
>>> type(tkinter.Tk())
<class 'tkinter.Tk'>
>>> type(tkinter.Toplevel())
<class 'tkinter.Toplevel'>
这两个都会创建个人 windows。我假设 tkinter.Tk()
returns tkinter 应用程序的 "main" window,而任何额外的 windows 应该使用 tkinter.Toplevel()
.[=17 创建=]
我注意到如果关闭 tkinter.Tk()
的 window,两个 windows 都会关闭。此外,如果您在不调用 tkinter.Tk()
的情况下调用 tkinter.Toplevel()
,则会创建两个 windows(其中一个是 "main" window,当关闭时,将同时关闭 Toplevel window).
这准确吗?还有其他我应该关注的差异吗?
您的总结是准确的。 tkinter 的核心架构特征之一是小部件存在于一个只有一个根 window 的层次结构中。那个根 window 是你在实例化 Tk
时得到的。
实例化 Tk
不仅仅是创建一个 window,它还初始化了整个 tkinter 框架。它实际上启动了一个隐藏的 tcl 解释器,它执行管理小部件的实际工作。 Tkinter 只是这个解释器的 python 包装器。
如果您尝试在没有先明确创建根 window 的情况下创建其他小部件,则会自动创建一个,因为每个 tkinter 应用程序都必须只有一个根 window。
在Python3中,我运行下面的互动shell:
>>> import tkinter
>>> type(tkinter.Tk())
<class 'tkinter.Tk'>
>>> type(tkinter.Toplevel())
<class 'tkinter.Toplevel'>
这两个都会创建个人 windows。我假设 tkinter.Tk()
returns tkinter 应用程序的 "main" window,而任何额外的 windows 应该使用 tkinter.Toplevel()
.[=17 创建=]
我注意到如果关闭 tkinter.Tk()
的 window,两个 windows 都会关闭。此外,如果您在不调用 tkinter.Tk()
的情况下调用 tkinter.Toplevel()
,则会创建两个 windows(其中一个是 "main" window,当关闭时,将同时关闭 Toplevel window).
这准确吗?还有其他我应该关注的差异吗?
您的总结是准确的。 tkinter 的核心架构特征之一是小部件存在于一个只有一个根 window 的层次结构中。那个根 window 是你在实例化 Tk
时得到的。
实例化 Tk
不仅仅是创建一个 window,它还初始化了整个 tkinter 框架。它实际上启动了一个隐藏的 tcl 解释器,它执行管理小部件的实际工作。 Tkinter 只是这个解释器的 python 包装器。
如果您尝试在没有先明确创建根 window 的情况下创建其他小部件,则会自动创建一个,因为每个 tkinter 应用程序都必须只有一个根 window。