我知道在tkinter中,一旦运行mainloop(),则直到该窗口被销毁之前,它将没有代码运行。我发现常见的解决方案是使用tk.after以一定间隔重复调用一个函数。但是,我使用的是for循环,每次循环时都会更新一个我想在GUI中看到更改的变量。
PB=myProgressBar()
for i in range (0, len(dataset)):
performfunction
PB.update(i)
PB.quit()
目标是在对数据集中的每个项目执行操作时,GUI将显示程序的距离。
在进度条类中,我尝试使用tk.IntVar作为我的ttk.ProgressBar值,并通过PB.update(i)设置该值来更新它。 我也尝试在进度条类的更新方法中使用ProgressBar ['value'] = i。 在这两种情况下,如果我在循环之前运行mainloop(),则for循环不会运行(如您期望的那样),但是我不确定如何运行mainloop并获取更新GUI而不会有混乱的tk.after函数,可能必须包含一个self.i值(然后在替换循环的函数末尾执行self.i + = 1)。 有没有一种干净的“ pythonic”方法来做到这一点?