如何用 python tkinter 显示进度条且实时更新进度状态?
比如我有48个事件要处理,每处理一个事件就更新进度条,直到全部处理,显示100%。
这个百分比数字要放在进度条的正中间,而且没有背景色,随着进度条更新百分比。
我试过 ttk.Progressbar
如何用 python tkinter 显示进度条且实时更新进度状态?
比如我有48个事件要处理,每处理一个事件就更新进度条,直到全部处理,显示100%。
这个百分比数字要放在进度条的正中间,而且没有背景色,随着进度条更新百分比。
我试过 ttk.Progressbar
让阿豪来帮你解答,本回答参考chatgpt3.5编写提供,如果还有疑问可以评论或留言的 start 和 step 方法,但是没有找到合适的方式实现百分比等信息的动态更新。我该怎么做呢? 回答如下: 为实现在 tkinter 中显示进度条且实时更新进度状态,可以使用 ttk.Progressbar 对象和 tkinter 中的 after 函数。具体步骤如下:
import tkinter as tk
from tkinter import ttk
# 创建一个 tkinter 窗口
root = tk.Tk()
root.geometry('300x100')
# 创建一个 Label 对象,用于显示进度百分比
percent = tk.StringVar()
percent_label = tk.Label(root, textvariable=percent, bg='white', font=('Arial', 10))
percent_label.pack(fill='x')
# 创建一个 ttk.Progressbar 对象,用于显示进度条
progress = ttk.Progressbar(root, mode='determinate', orient='horizontal', length=200)
progress.pack()
# 创建处理事件的函数
def do_work():
total = 48 # 事件的总数
for i in range(total):
# 处理当前事件
# ...
# 更新进度条的值,并显示百分比
progress.step(100 / total)
percent.set('{:.0f}%'.format(progress['value']))
root.update_idletasks() # 立即更新界面
# 等待 50 毫秒,以便用户能看到进度条的变化
root.after(50)
# 显示进度条和百分比,并启动处理事件的函数
progress['value'] = 0
percent.set('0%')
root.update_idletasks() # 立即更新界面
do_work()
root.mainloop()
在上面的代码中,我们首先创建了一个 Label 对象,用于显示进度百分比,然后创建了一个 ttk.Progressbar 对象,用于显示进度条。接着,我们创建了一个名为 do_work 的函数,用于处理事件并更新进度条和百分比。在这个函数中,我们使用了一个循环来处理所有的事件,并在循环体中更新进度条和百分比的值。在更新完进度条和百分比后,我们使用了 after 函数来等待 50 毫秒,以便用户能看到进度条的变化。最后,我们使用 0 来初始化进度条的值,并调用 do_work 函数来启动处理事件的过程,并更新进度条和百分比的值。