Python 如何查看插入文本框的不断更新变量的更改
因此,我想创建一个文本框,允许我显示不断更新的消息。但是,对于我下面的代码,它只显示变量msg中的第一条加载的消息。我怎样才能解决这个问题Python 如何查看插入文本框的不断更新变量的更改,python,python-3.x,tkinter,Python,Python 3.x,Tkinter,因此,我想创建一个文本框,允许我显示不断更新的消息。但是,对于我下面的代码,它只显示变量msg中的第一条加载的消息。我怎样才能解决这个问题 import tkinter import threading import time global msg def gui(): root = tkinter.Tk() box = tkinter.Text(width=90, height=30, font=("Lucida Console", 10))
import tkinter
import threading
import time
global msg
def gui():
root = tkinter.Tk()
box = tkinter.Text(width=90, height=30, font=("Lucida Console", 10))
box.pack(pady=20)
box.insert(tkinter.END, msg) #this updated msg should be shown
box.configure(state=tkinter.DISABLED)
root.mainloop()
def loop():
global msg
for x in range(100):
msg = str(x)
time.sleep(1)
if __name__ == '__main__':
p1 = threading.Thread(target=gui)
p2 = threading.Thread(target=loop)
p1.start()
p2.start()
文本
小部件的配置被禁用时,您无法更改文本insert(tkinter.END,msg)
只会插入文本一次。您可以使用.after
每次插入文本。(如果您不想在中使用insert方法。
之后,您可以为框
绑定StringVar
)import tkinter
import threading
import time
global msg
def gui():
def insert():
global msg
box.configure(state=tkinter.NORMAL)
box.insert(tkinter.END, msg)
box.configure(state=tkinter.DISABLED)
root.after(1000, insert)
root = tkinter.Tk()
box = tkinter.Text(width=90, height=30, font=("Lucida Console", 10))
box.pack(pady=20)
insert()
root.mainloop()
def loop():
global msg
for x in range(100):
msg = str(x)
time.sleep(1)
if __name__ == '__main__':
p1 = threading.Thread(target=gui)
p2 = threading.Thread(target=loop)
p1.start()
p2.start()
< >我不建议您使用全局变量<代码> MSG。您可以考虑使用线程队列。