【问题标题】:Tkinter window hangs after starting progress barTkinter 窗口在启动进度条后挂起
【发布时间】: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()

但一段时间后,它会从 48% 跃升至 100%,并且该过程完成。

【问题讨论】:

  • 我遇到了类似的问题,进度条不会更新,而是程序会出现冻结,而进度条会继续在内部更新
  • 如果我将函数内的命令 root.update_idletasks() 更改为简单的 root.update(),程序运行良好,尽管文本似乎无法以与进度条相同的频率更新
  • @jthree8 感谢您的精彩评论。它实际上帮助了我。我以为我的软件不能正常工作:)

标签: python tkinter progress-bar


【解决方案1】:

我在我这边运行了你的代码,一切正常,加载条上升到 100,字符串上升到 100。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-07-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多