利用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%逐渐增加,最后进度条完成后会再弹出一个提示框。
这个示例代码可以作为一个基本的框架,你可以根据自己的需求修改和扩展它。例如,你可以改变进度条的长度、调整进度条更新的频率,或者添加其他控件来丰富进度条对话框的内容。
