【发布时间】:2020-11-21 01:12:56
【问题描述】:
我遇到了一个非常奇怪的问题。在下面的代码中,似乎没有任何问题,但在 tkinter 的进度条中完成一定百分比后,窗口仍然冻结。
from tkinter import *
from tkinter import ttk
from tkinter.ttk import *
import time
root = Tk()
s = Style()
s.configure("TProgressbar", foreground="green", background="green", thickness=50)
def start_training_images():
for i in range(1,101,):
progress['value'] = i
label_progress.config(text=str(i)+"%")
root.update_idletasks()
time.sleep(0.1)
ttk.Style().configure('green/white.TLabel', foreground='green', font=("Verdana", 18))
label_train =Label(root, text="Click Start for training", font='arial 15 bold', style='green/white.TLabel')
label_train.pack(padx=20, pady=15)
label_progress = Label(root, font='arial 12 bold')
label_progress.pack(padx=100, pady=3)
progress = Progressbar(root, style="TProgressbar", length=250, mode="determinate")
progress.pack(padx=10, pady=15)
btn_start = ttk.Button(root, text="Start", command = start_training_images)
btn_start.pack(padx=20, pady=15)
root.mainloop()
【问题讨论】:
-
我遇到了类似的问题,进度条不会更新,而是程序会出现冻结,而进度条会继续在内部更新
-
如果我将函数内的命令
root.update_idletasks()更改为简单的root.update(),程序运行良好,尽管文本似乎无法以与进度条相同的频率更新 -
@jthree8 感谢您的精彩评论。它实际上帮助了我。我以为我的软件不能正常工作:)
标签: python tkinter progress-bar