我正在尝试构建一个带有主窗口的应用程序,以及一个检查循环中某个条件的后台线程,当满足条件时,将主窗口置于前面。
要将窗口置于前面,我使用lift()
方法,但它不起作用。
所以我从python命令行做了以下实验:
from Tkinter import *
root = Tk()
出现一个tk窗口。最小化窗口,然后:
root.lift()
什么都没发生。我也尝试在解除之前启动窗口的主循环:
import thread
# start mainloop in separate thread so we can continue typing
thread.start_new_thread(root.mainloop, ())
root.lift()
再一次,没有任何反应。在我的实际代码中,情况更糟 - 一旦我调用lift()
,窗口就会卡住并停止响应。
我做错了什么?
(我在Windows 7上使用Python 2.7.2。)
答案 0 :(得分:1)
您不能在与创建窗口小部件的线程不同的线程中运行mainloop。实际上,您无法从另一个线程与小部件进行交互。
要恢复最小化窗口的效果,您需要使用deiconify方法。