【问题标题】:Is each instance of Tk() class running independent of each other?Tk() 类的每个实例是否相互独立运行?
【发布时间】:2016-03-21 20:32:27
【问题描述】:

我一直在学习如何使用 Tkinter 制作 GUI,我遇到了一个问题。在我测试程序时,我经常会在后台已经存在一个实例的情况下构建代码。这两者在执行其功能方面是否相互独立?我一直读到,当我创建 Tk() 的实例然后运行它的 mainloop() 时,这就是处理所有事情的原因。如果每个循环与不同的 Tk() 实例相关,我可以运行两个或多个循环吗?

【问题讨论】:

  • 你是什么意思:1. 我经常在后台已经存在一个实例的情况下构建代码。 ? 2. 我可以运行两个或更多循环吗?你的意思是mainloop()吗?
  • 在测试代码时,我将运行代码来测试我的程序的功能。有时我在再次运行代码之前不会关闭它,所以我有两个实例同时运行。我想知道这是否是两个独立的实例,以及我的想法是否正确。
  • 是的,我的意思是 mainloop()。谢谢。
  • 1. 每个Tkinter.Tk() 实例都是一个独立的进程。 2. 不,您不能拥有多个mainloop()
  • 我的意思是mainloop() 的总数来自多个Tkinter.Tk() 实例。很抱歉造成混乱。

标签: python python-2.7 tkinter


【解决方案1】:

Tk 的每个实例都与Tk 的任何其他实例分开。它拥有自己的底层 tcl 解释器副本。 Tk 在同一进程中的两个实例意味着您有两个活动的 tcl 解释器。

作为一般规则,您应该只拥有一个 Tk 的实例,但我想如果您完全了解它们的工作原理,应该可以拥有两个或更多。

我认为这属于你不应该做的事情,直到你明白为什么你不应该做这些事情。一旦你明白了,你就不会想这样做了。

【讨论】:

  • 为什么运行两个Tk 实例会很糟糕?
  • @SebastianFreeman:它本身不会很糟糕,只是可能不会像你期望的那样运行。一方面,它需要多个线程,这总是导致复杂的代码。如果您需要多个寡妇,有比尝试拥有两个 Tk 实例更好的解决方案。
  • @SebastianFreeman:只要您需要再次拨打mainloop
猜你喜欢
  • 2018-10-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-13
  • 2016-07-07
  • 2011-08-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多