Tkinter创建多个Windows - 使用新的Tk实例或Toplevel或Frame?

时间:2016-05-28 19:17:03

标签: python python-2.7 user-interface tkinter

我开始学习Tkinter并且每次都使用新的Tk实例创建新的窗口。我刚才读到这不是一个好习惯。如果是这样,为什么?怎么可以做得更好?我见过其他人用Toplevel和Frame实例创建窗口。使用这些有什么好处/缺点呢?

如果这有所不同:我正在编写代码的应用程序以登录窗口开始,然后进入第二个窗口,输入的密码是正确的。

1 个答案:

答案 0 :(得分:2)

每个tkinter程序只需要Tk的一个实例。 Tkinter是嵌入式tcl解释器的包装器。每个Tk实例都有自己的解释器副本,因此两个Tk实例有两个不同的命名空间。

如果您需要多个窗口,请创建一个Tk实例,然后其他窗口应为Toplevel的实例。

虽然可以创建,销毁和重新创建根窗口,但实在没有意义。而是为登录屏幕创建根窗口,然后删除登录屏幕小部件并将其替换为第二个窗口。

如果你制作了每个" windows"这就变得微不足道了。一个继承自tk.Frame的单独类。因为tkinter会在框架被破坏时销毁所有子窗口小部件,所以很容易从一个窗口切换#34;到另一个。创建LoginFrame的实例并将其打包在根窗口中。当他们输入正确的密码时,销毁该实例,创建MainWindow的实例并打包。