如何用python语言写一段GUI按时间递增的进度条系统
下面是一个使用Python Tkinter库编写的GUI时间递增进度条系统的示例代码:
import tkinter as tk
import time
class ProgressBar:
def __init__(self, master):
self.master = master
self.master.title("Time Progress Bar")
self.master.geometry("300x100")
self.progressbar = tk.Canvas(self.master, width=200, height=20, bg="white", relief="sunken", bd=2)
self.progressbar.pack(pady=10)
self.progressbar.create_rectangle(0, 0, 0, 20, fill="green", tags="progress")
self.time_label = tk.Label(self.master, text="Time: 0s")
self.time_label.pack(pady=5)
self.start_button = tk.Button(self.master, text="Start", command=self.start)
self.start_button.pack(pady=5)
self.stop_button = tk.Button(self.master, text="Stop", command=self.stop, state="disabled")
self.stop_button.pack(pady=5)
self.is_running = False
self.start_time = 0
def start(self):
self.start_button.config(state="disabled")
self.stop_button.config(state="normal")
self.is_running = True
self.start_time = time.time()
self.update_progress()
def stop(self):
self.start_button.config(state="normal")
self.stop_button.config(state="disabled")
self.is_running = False
def update_progress(self):
if self.is_running:
elapsed_time = time.time() - self.start_time
progress_width = int(200 * elapsed_time / 10)
self.progressbar.coords("progress", 0, 0, progress_width, 20)
self.time_label.config(text="Time: {:.1f}s".format(elapsed_time))
if elapsed_time < 10:
self.master.after(100, self.update_progress)
else:
self.stop()
root = tk.Tk()
app = ProgressBar(root)
root.mainloop()
这个程序创建了一个窗口,其中包含一个矩形进度条、一个显示已经过去的时间的标签、一个开始按钮和一个停止按钮。当用户点击开始按钮时,进度条开始递增,同时标签显示经过的时间。当经过的时间达到10秒时,进度条停止递增,停止按钮变为不可用状态。当用户点击停止按钮时,进度条停止递增,开始按钮变为可用状态。程序使用time模块来计算经过的时间,使用after方法来定时更新进度条和标签的显示
原文地址: https://www.cveoy.top/t/topic/eTBE 著作权归作者所有。请勿转载和采集!