为什么不鼓励多个Tk实例?考虑下面的例子: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 tkdef 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?第二个片段是否被认为更好一点,或者第一个代码的条件是否相同?
3 回答

潇湘沐
TA贡献1816条经验 获得超6个赞
到目前为止,我发现的最佳参考是tkinterbook中的这一部分。
在我们使用过的简单示例中,屏幕上只有一个窗口; 根窗口。调用Tk构造函数时会自动创建
和
如果需要创建其他窗口,可以使用Toplevel小部件。它只是在屏幕上创建一个新窗口,这个窗口的外观和行为与原始根窗口非常相似
我对它的看法是,一个Tk
实例创建一个Toplevel
小部件,以及mainloop
其中应该只有一个小部件。

侃侃尔雅
TA贡献1801条经验 获得超16个赞
如果你将有多个Tk
about 实例,它们应该放在不同的线程中,以便它们获得自己的事件处理循环。技术上可以将这些线程中的底层小部件融合到一个视图中,但这是一种非常先进的技术,我不知道它是否实际暴露在Tkinter中。坦率地说,在实践中将所有GUI活动保持在单个线程中要简单得多。
添加回答
举报
0/150
提交
取消