这是测试用例。。。
import Tkinter as tk
import thread
from time import sleep
if __name__ == '__main__':
t = tk.Tk()
thread.start_new_thread(t.mainloop, ())
# t.iconbitmap('icon.ico')
b = tk.Button(text='test', command=exit)
b.grid(row=0)
while 1:
sleep(1)
这个代码有效。取消注释t.iconbitmap行并锁定它。按你喜欢的方式重新安排,它会锁上的。
当存在图标时,如何防止tk.mainloop锁定GIL?
目标是win32和Python 2.6.2。
我认为不应该在不同的线程上执行主循环。AFAIK,主循环应该在创建小部件的同一线程上执行。
我熟悉的GUI工具包(Tkinter,.NET Windows表单)就是这样:您只能从一个线程操作GUI。
在Linux上,您的代码引发了一个异常:
以下操作之一将起作用(无额外线程):
带额外螺纹:
如果需要从tkinter线程外部与tkinter进行通信,我建议您设置一个计时器来检查队列的工作情况。
下面是一个例子:
相关问题 更多 >
编程相关推荐