手动进度条python

时间:2016-10-14 10:26:20

标签: python loops tkinter

我正在尝试制作一个代码,以便显示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.有关如何解决它的任何建议吗?

1 个答案:

答案 0 :(得分:1)

tkintermainloop(),它一直在运行并做很多事情 - 即。它更新小部件中的数据,重绘小部件,执行您的功能。当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: tkinterttk.Progressbar

示例代码:https://stackoverflow.com/a/24770800/1832058

enter image description here