欢迎访问宙启技术站
智能推送

利用tkinter.messagebox显示进度条

发布时间:2023-12-24 19:10:26

在Tkinter中,可以使用tkinter.messagebox模块来创建各种对话框,但是它并不直接支持显示进度条。可以使用threading模块来创建一个后台线程,在后台线程中显示进度条,并通过tkinter.messagebox来显示进度条对话框。

下面是一个显示进度条的示例代码:

import tkinter as tk
import tkinter.messagebox as messagebox
import threading
import time


def show_progress():
    progress_dialog = tk.Toplevel(root)
    progress_dialog.title('Progress')
    progress_dialog.geometry('200x100')
    
    progress_label = tk.Label(progress_dialog, text='Processing...')
    progress_label.pack(pady=10)
    
    progress_bar = tk.Progressbar(progress_dialog, length=150)
    progress_bar.pack(pady=10)
    
    def update_progress():
        for i in range(101):
            progress_bar['value'] = i
            progress_dialog.update_idletasks()
            time.sleep(0.1)
    
    threading.Thread(target=update_progress).start()


def show_progress_example():
    messagebox.showinfo('Show Progress', 'Click OK to show progress...')
    show_progress()
    messagebox.showinfo('Show Progress', 'Progress complete.')


if __name__ == '__main__':
    root = tk.Tk()
    root.geometry('300x200')

    show_progress_button = tk.Button(root, text='Show Progress', command=show_progress_example)
    show_progress_button.pack(pady=50)

    root.mainloop()

在这个示例代码中,show_progress()函数用来创建进度条对话框。首先创建一个Toplevel窗口作为进度条对话框,然后在该窗口中添加一个Label和一个Progressbar来显示进度。update_progress()函数用来更新进度条的值,它会在后台线程中执行,每隔0.1秒更新一次进度条的值。

show_progress_example()函数是一个包装了show_progress()函数的示例,它首先弹出一个提示框,点击OK后调用show_progress()函数显示进度条,最后再弹出一个提示框表示进度条完成。

if __name__ == '__main__':中,创建了一个Tk窗口,并添加了一个按钮用来触发show_progress_example()函数。

当我们运行这段代码时,点击按钮后会首先弹出一个提示框,点击OK后会显示进度条对话框,并且进度条会从0%到100%逐渐增加,最后进度条完成后会再弹出一个提示框。

这个示例代码可以作为一个基本的框架,你可以根据自己的需求修改和扩展它。例如,你可以改变进度条的长度、调整进度条更新的频率,或者添加其他控件来丰富进度条对话框的内容。