Python 使用线程外的数据更新Tkinter窗口标签变量

Python 使用线程外的数据更新Tkinter窗口标签变量,python,python-3.x,tkinter,python-multithreading,Python,Python 3.x,Tkinter,Python Multithreading,我想用线程外数据中的新变量更新tkinter窗口标签 以下是我的示例代码: class App(threading.Thread): global small global medium global large global jumbo global reject def __init__(self): threading.Thread.__init__(self) self.start() def callback(self): self.root.quit()

我想用线程外数据中的新变量更新tkinter窗口标签

以下是我的示例代码:

class App(threading.Thread):
global small
global medium
global large
global jumbo
global reject
def __init__(self):
    threading.Thread.__init__(self)
    self.start()

def callback(self):
    self.root.quit()

def run(self):
    self.root = tk.Tk()
    self.root.protocol("WM_DELETE_WINDOW", self.callback)
    string1 = "SMALL: " + str(small) + '\n' + "MEDIUM: " + str(medium) + '\n' + "LARGE: " \
              + str(large) + '\n' + "JUMBO: " + str(jumbo) + '\n' + "REJECTED: " + str(reject) + '\n' + "TOTAL: " + str(total)
    label = tk.Label(self.root, text=string1)
    label.pack()


    self.root.mainloop()
app = App()
#actual code runs outside the App() thread

那里的变量正在被线程外运行的实际代码更改。我尝试使用
root.after()
,但无法使其工作

解释器运行行
self.root.mainloop()
后,它将卡在无限循环中。该行之后的其余代码将不会运行。因此,更改所有变量的代码必须在self.root.mainloop()之前,或者由按钮触发


至于如何设置按钮回调,您可以参考

“我尝试使用root.after()”:无法重现此内容,请确保您发布的代码实际按照您所声称的方式运行。读取
标签
run()
函数内部的局部变量,不能在函数外部访问。示例中的缩进需要修复。