考虑以下示例:
import tkinter as tk
root = tk.Tk()
root.title("root")
other_window = tk.Tk()
other_window.title("other_window")
root.mainloop()
还可以看下面的示例,该示例连续创建Tk
实例,而不是一次性创建,因此在任何给定的时刻只有一个Tk
实例:
import tkinter as tk
def create_window(window_to_be_closed=None):
if window_to_be_closed:
window_to_be_closed.destroy()
window = tk.Tk()
tk.Button(window, text="Quit", command=lambda arg=window : create_window(arg)).pack()
window.mainloop()
create_window()
- 为什么拥有多个
Tk
实例被认为是不好的? - 第二段代码是否被认为更好一些,还是它也遭受了第一个代码相同的问题?
Tk
实例,它们应该放在不同的线程中,这样它们就可以拥有自己的事件处理循环。理论上可能将这些线程中的底层控件合并为单个视图,但这是一种非常高级的技术, 我不确定Tkinter是否支持此方法。实际上,在同一个线程中保持所有GUI活动要简单得多。 - Donal Fellowstoplevel -use
和toplevel -container
。 - Johannes Kuhn