我想将GUI中的Label更新为一种进度条,显示数据传输的完整程度。
我看到的每个地方,人们都说要使用Label的textvariable
选项,然后设置字符串和标签更新。这对我不起作用。标签在数据收集循环结束时更新。我不太了解编程的深度,但我想,在完成数据收集循环而不是中间循环之后,Python才会刷新Tkinter。
这是数据收集循环:
def getdata(self, filename):
data=[]
count=0
percentage=0
self.ser.write('$get\r\n')
total=int(self.ser.readline().split()[0])
line=self.ser.readline()
while line != '':
data.append(line)
count+= 1
if percentage != str(round(float(count)/total,2)):
menu.percentage.set(str(round(float(count)/total,2)*100)+'% Completed')
#^^^menu.percentage is the textvariable of the Label I want updated^^^#
print str(round(float(count)/total,2)*100)+'% Completed'
percentage = str(round(float(count)/total,2))
line=self.ser.readline()
outfile=open(filename, 'w')
outfile.writelines(data)
我的问题是:是否有某种命令可以实时更新GUI中的标签?
答案 0 :(得分:5)
简短回答是致电update_idletasks
。这是有效的,因为窗口小部件更新是作为空闲任务处理的。这些通常由事件循环执行,但您可以将它们称为小瓶update_idletasks
。
如需更多背景信息,请参阅问题How do widgets update in Tkinter?的答案,或只在此网站上搜索update_idletasks
。