Python 3.x 如果销毁上一个实例,是否可以再次使用tk.tk()?

Python 3.x 如果销毁上一个实例,是否可以再次使用tk.tk()?,python-3.x,tkinter,Python 3.x,Tkinter,我知道在一个应用程序中使用多个tk.tk()是一种不好的做法,如果我想创建多个窗口,我应该使用tk.Toplevel()。但是,如果我销毁前面的tk.tk()实例,然后调用另一个实例,该怎么办?从技术上讲,第一个无休止的循环已经结束,所以我应该没事,对吧 例如,我编写了一个以登录屏幕开始的应用程序,然后我移动到,比方说,“mainwindow”,这是用户最常看到的屏幕。启动应用程序时,登录屏幕只是一次性的,用户不会再次返回(除非他关闭“主窗口”并再次运行应用程序)。在登录窗口上调用tk.tk()

我知道在一个应用程序中使用多个
tk.tk()
是一种不好的做法,如果我想创建多个窗口,我应该使用
tk.Toplevel(
)。但是,如果我销毁前面的
tk.tk()
实例,然后调用另一个实例,该怎么办?从技术上讲,第一个无休止的循环已经结束,所以我应该没事,对吧

例如,我编写了一个以登录屏幕开始的应用程序,然后我移动到,比方说,“mainwindow”,这是用户最常看到的屏幕。启动应用程序时,登录屏幕只是一次性的,用户不会再次返回(除非他关闭“主窗口”并再次运行应用程序)。在登录窗口上调用
tk.tk()
,然后选择“login”按钮
destroy
login窗口,然后调用“mainwindow”作为
tk.tk()
,是否更符合逻辑

从技术上讲,我可以
退出登录窗口,并使用
tk.Toplevel
创建所有窗口作为登录窗口的子窗口(流程为loginwindow->mainwindow->otherwindows),但我想知道,当你不再需要窗口时,保持窗口为白色是一种好的做法吗?

你实际上可以创建任意数量的窗口。 这里的代码对我来说非常有效您只需从一个类中创建多个对象。

从tkinter导入*
windows=[]
对于范围(5)内的x:
append(Tk())
按钮(windows[-1],text='Destroy this window',command=windows[-1].Destroy).pack()
windows[-1].mainloop()


因此,您可以先破坏一个窗口,然后再创建另一个窗口,甚至让它们同时工作。

如果当前实例已被破坏,则可以创建另一个
Tk()
实例。对于登录屏幕场景,通常使用应用程序的根窗口,但在用户登录之前将其隐藏。然后为登录表单创建一个临时顶层。是的,首先调用主窗口并将其隐藏,直到用户成功登录为止,这很有意义-谢谢您的输入!这对你来说是如何完美地工作的?您缺少了
window.mainloop()
,即使您的按钮仅用于最后一个窗口。好的,我刚刚用空闲进行了测试,甚至没有在程序本身中进行测试。但为了避免主要问题,即无限循环
window.mainloop()
,我通常使用
window.update()
它还可以在不停止程序其余部分工作的情况下更新窗口。如果您愿意,可以重写此代码以提供某种工作体验。我可以编辑以显示我的意思。更新了代码。