为什么不鼓励多个Tk实例?

为什么不鼓励多个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

  • 第二个片段是否被认为更好一点,或者第一个代码的条件是否相同?


子衿沉夜
浏览 701回答 3
3回答

潇湘沐

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

侃侃尔雅

如果你将有多个Tkabout 实例,它们应该放在不同的线程中,以便它们获得自己的事件处理循环。技术上可以将这些线程中的底层小部件融合到一个视图中,但这是一种非常先进的技术,我不知道它是否实际暴露在Tkinter中。坦率地说,在实践中将所有GUI活动保持在单个线程中要简单得多。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python