我正在尝试为长时间运行的东西编写 GUI,但似乎无法弄清楚如何避免锁定 GUI 线程。我想使用 ttk.Progressbar 但我似乎无法更新栏值并让窗口更新 GUI。我试过将更新处理放在它自己的函数中并直接更新它,但都没有奏效。更新处理程序中的值是我更喜欢做的,因为这个脚本会做一些下载,然后处理,然后上传,三个单独的栏看起来最好。
from Tkinter import *
import time, ttk
class SampleApp(Frame):
def __init__(self,master):
Frame.__init__(self,master)
self.pack()
self.prog = ttk.Progressbar(self, orient = 'horizontal', length = 200, mode = 'determinate')
self.prog.pack()
self.button = Button(self,text='start',command=self.start)
self.button.pack()
def start(self):
self.current = 0
self.prog["value"] = 0
self.max = 10
self.prog["maximum"] = self.max
self.main_prog()
def handler(self):
self.prog['value'] += 1
def main_prog(self):
for x in range(10):
time.sleep(2)
self.handler()
root = Tk()
app = SampleApp(master = root)
app.mainloop()