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

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

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

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

解决方法:

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

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

虽然您可以创建,销毁和重新创建根窗口,但实际上没有意义.相反,为登录屏幕创建根窗口,然后只删除登录屏幕小部件并将其替换为第二个窗口.

如果您将每个“窗口”都设置为继承自tk.Frame的单独类,则这变得微不足道.因为tkinter会在框架被销毁时销毁所有子窗口小部件,所以很容易从一个“窗口”切换到另一个窗口.创建LoginFrame的实例并将其打包在根窗口中.当他们输入正确的密码时,销毁该实例,创建一个MainWindow实例并打包它.

本文标题为:python – Tkinter创建多个Windows – 使用新的Tk实例或Toplevel或Frame?

基础教程推荐