【问题标题】:Error while trying to change tkinter label from another thread尝试从另一个线程更改 tkinter 标签时出错
【发布时间】:2017-09-27 14:39:58
【问题描述】:

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

UnpickleableError: 无法腌制对象

如何更改主 GUI 线程/类之外的 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"

【问题讨论】:

标签: python multithreading user-interface tkinter


【解决方案1】:
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()

我想这就是你想要的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-31
    • 2012-05-11
    • 1970-01-01
    • 2019-05-06
    • 1970-01-01
    相关资源
    最近更新 更多