尝试从另一个线程更改tkinter标签时出错

时间:2017-04-29 16:09:06

标签: python multithreading user-interface tkinter

我有thread1。和一个主GUI线程。我试图在GUI线程上更改标签,形成thread1。我将线程上的标签变量作为参数传递。但是我收到以下错误:

  

UnpickleableError:无法腌制对象

如何更改主GUI Thread / Class

之外的GUI元素
class MyFirstGUI:
    communicationQueue=Queue()
    def __init__(self, master):
      thisLabel = Label(master, text="Test")
      thisLabel.pack()
      tempThread=testThread(thisLabel)
      tempThread.start()

class testThread(Thread):
    def __init__(self, label):
      label["text"]="something"

1 个答案:

答案 0 :(得分:0)

import tkinter as tk
import threading, random, time

class MyFirstGUI:
    def __init__(self, master):
      self.label = tk.Label(master, text = "Test")
      self.label.pack()

    def update(self):
        while True:
            self.label["text"] = random.randint(1, 1000)
            time.sleep(1)


root = tk.Tk()

GUI = MyFirstGUI(root)

loop = threading.Thread(target = GUI.update).start()

root.mainloop()

我认为这就是你所要求的。