我正在python中使用tkinter GUI软件包,并希望跟踪遍历列表并对列表中的每个项目执行操作的过程的进度。我想在显示“已处理100的项目1”的标签中跟踪进度。标签绑定到字符串变量。这是我最初尝试的:
def runLoop(self):
for site in self.sitelist:
#Do stuff
self.x+=1
self.outLabelStrVar="Item " + str(self.x) + " of " + str(len(self.sitelist)) + " processed."
但是,这当然不是实时更新的,因为像this one这样的线程中所建议的,我从未返回过tkinter窗口mainloop。
所以我更新了代码以使函数递归:
def runLoop(self, item=None):
if item is None:
for site in self.sitelist:
self.after(1,runLoop(site))
else:
self.x+=1
self.outLabelStrVar="Item " + str(self.x) + " of " + str(len(self.sitelist)) + " processed."
我认为随着for循环的每次迭代都会返回到主tkinter循环。但这也不能实时更新输出标签。
我误会什么?