【问题标题】:How to update a TKinter display in a seperate (main) loop?如何在单独的(主)循环中更新 TKinter 显示?
【发布时间】:2015-10-15 18:12:30
【问题描述】:

我有一个主循环,并希望在 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 对象。 (由...启动的线程中未处理的异常)

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

【问题讨论】:

    标签: python multithreading tkinter


    【解决方案1】:

    您不能在创建小部件的不同线程中运行mainloop。相反,将您的“主进程”移动到一个线程中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-04-29
      • 1970-01-01
      • 2020-04-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多