#Python3 用线程更新界面中内容
在做一个GUI 的时候需要显示某个模块运行的时间,用于提示该模块的运行状态,写一个小例子以记录:
#!/usr/bin/env python3
from tkinter import *
import time
import threading
class app_GUI():
def __init__(self,parent):
self.master = parent
self.init_window()
self.status = 0
def init_window(self):
self.master.geometry("300x300")
self.master.title("a simple")
self.text_show = StringVar()
self.text_show.set("default text")
self.label1 = Label(self.master,textvariable = self.text_show)
self.label1.pack(side = "top",anchor = W)
self.int_var = IntVar()
self.int_var.set(1)
self.b1 = Radiobutton(self.master,text = " time start",variable=self.int_var,value = 1).pack(side = "top",anchor=W)
self.b2 = Radiobutton(self.master,text = " time end ", variable=self.int_var,value = 0).pack(side = "top",anchor=W)
Button(self.master,text = "check",command = self.cofirm).pack(side = "top",anchor = W)
def set_string(self,str_show):
self.text_show.set(str_show)
def cofirm(self):
self.status = self.int_var.get()
def set_time(app_c):
i = 0
while True:
if app_c.status == 0:
app_c.set_string("wait start")
i = 0
else :
app_c.set_string("start time " + str(i) + " s")
time.sleep(1)
i = i + 1
if __name__ == "__main__":
window = Tk()
UI = app_GUI(window)
t_thread = threading.Thread(target= set_time,args=(UI,))
t_thread.daemon = True
t_thread.start()
window.mainloop()