如何在单独(主)循环中更新TKinter显示?

时间:2015-10-15 18:12:30

标签: python multithreading tkinter

我有一个主循环,希望在tkinter显示中监视我的过程中更改的值。

我考虑过这样的事情:

from Tkinter import *
import thread
import time


class monitor(Frame):

    def __init__(self):

        self.root=Tk()
        Frame.__init__(self, self.root)
        self.pack()
        self.t = StringVar()
        Label(self.root, textvariable=self.t).pack()

    def start(self):
        #self.mainloop()
        thread.start_new_thread(self.mainloop,(None,))

    def write(self,txt):
        self.t.set(txt)

#Monitoring
m=monitor()    
m.start()

#Main process
for i in range(10):
    m.write("Value is "+str(i))
    time.sleep(1)

但是我不能从线程外部设置tkinter对象我启动了mainloop。 (由...开始的线程中未处理的异常)

我该如何以最简单的方式解决这个问题?

1 个答案:

答案 0 :(得分:0)

您无法在创建窗口小部件的其他线程中运行mainloop。相反,将“主进程”移动到一个线程中。