我正在尝试制作一个代码,以便显示1到100之间的所有数字,以显示其加载的内容。
for i in range(101):
self.new = Label(self.label_progress, text=i)
time.sleep(1)
self.new.place(in_= self.label_progress)
if i == 100:
self.new1=Label(self.label_progress, text="the download is complete")
self.new1.place(in_=self.label_progress, x=50)
但似乎它不想显示每个数字,直到循环完成,最后它只显示100.有关如何解决它的任何建议吗?
答案 0 :(得分:1)
tkinter
有mainloop()
,它一直在运行并做很多事情 - 即。它更新小部件中的数据,重绘小部件,执行您的功能。当mainloop()
执行您的功能时,它无法更新/重绘小部件,直到您的功能停止运行。您可以在函数中使用root.update()
强制tkinter更新/ readraw小部件。
或者您可以使用
root.after(miliseconds, function_name)
定期执行将更新Label
的函数。在执行tkinter
之间将有时间更新/重绘小部件。
使用after
更新Label
中的时间的示例:
https://github.com/furas/my-python-codes/tree/master/tkinter/timer-using-after
BTW: tkinter
有ttk.Progressbar
示例代码:https://stackoverflow.com/a/24770800/1832058