hrt5f 2024-03-19 18:34 采纳率: 69.2%
浏览 86

用 python tkinter 显示进度条且实时更新进度状态

如何用 python tkinter 显示进度条且实时更新进度状态?

比如我有48个事件要处理,每处理一个事件就更新进度条,直到全部处理,显示100%。
这个百分比数字要放在进度条的正中间,而且没有背景色,随着进度条更新百分比。

我试过 ttk.Progressbar

  • 写回答

4条回答 默认 最新

  • 码农阿豪@新空间代码工作室 Java领域优质创作者 2024-03-19 18:34
    关注
    让阿豪来帮你解答,本回答参考chatgpt3.5编写提供,如果还有疑问可以评论或留言
    的 start 和 step 方法,但是没有找到合适的方式实现百分比等信息的动态更新。我该怎么做呢? 回答如下: 为实现在 tkinter 中显示进度条且实时更新进度状态,可以使用 ttk.Progressbar 对象和 tkinter 中的 after 函数。具体步骤如下:
    1. 创建一个 tkinter 窗口,并在其中添加一个 ttk.Progressbar 对象,用于显示进度条。
    2. 添加一个 Label 对象,用于显示进度百分比。
    3. 创建一个函数,用于处理事件并更新进度条和百分比。这个函数应该包含一个循环,用于处理所有事件。每处理完一个事件后,应该更新进度条的值,并将百分比显示在 Label 上。
    4. 在函数中使用 after 函数,来实现动态更新进度条和百分比的功能。
    5. 最后,调用上述函数来启动处理事件的过程,并显示进度条和百分比。 下面是一个示例代码:
    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 函数来启动处理事件的过程,并更新进度条和百分比的值。

    评论

报告相同问题?

问题事件

  • 创建了问题 3月19日

悬赏问题

  • ¥15 soildworks装配体的尺寸问题
  • ¥100 有偿寻云闪付SDK转URL技术
  • ¥30 基于信创PC发布的QT应用如何跨用户启动后输入中文
  • ¥20 非root手机,如何精准控制手机流量消耗的大小,如20M
  • ¥15 远程安装一下vasp
  • ¥15 自己做的代码上传图片时,报错
  • ¥15 Lingo线性规划模型怎么搭建
  • ¥15 关于#python#的问题,请各位专家解答!区间型正向化
  • ¥15 unity从3D升级到urp管线,打包ab包后,材质全部变紫色
  • ¥50 comsol温度场仿真无法模拟微米级激光光斑