为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

子衿沉夜 2019-07-25 14:58:45
为什么不鼓励多个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其中应该只有一个小部件。


查看完整回答
反对 回复 2019-07-25
?
侃侃尔雅

TA贡献1801条经验 获得超16个赞

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

查看完整回答
反对 回复 2019-07-25
  • 3 回答
  • 0 关注
  • 700 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信