import time
from tkinter import Tk, ttk, StringVar, Canvas
class Frame(ttk.Frame):
def __init__(self, master=None, **kw):
super().__init__(master, **kw)
self.canvas = Canvas(self, width=120, height=30, bg="white")
self.canvas.grid(row=0, column=0)
#进度条以及完成程度
self.out_rec = self.canvas.create_rectangle(5, 5, 105, 25)
self.fill_rec = self.canvas.create_rectangle(5, 5, 5, 25, width=0, fill="green")
self.x = StringVar()
ttk.Label(self, textvariable=self.x, width=5).grid(row=0, column=1)
#更新进度条函数
def change_schedule(self, now_schedule, all_schedule):
rate = now_schedule/all_schedule
self.canvas.coords(self.fill_rec, (5, 5, 6 + rate*100, 25))
self.update()
self.x.set(f"{rate*100:.3g}%")
if rate >= 1:
self.x.set("完成")
def run():
root = Tk()
#创建画布
frame = Frame(root)
frame.grid(row=0, column=0) # 使用时将框架根据情况选择新的位置
for i in range(100):
time.sleep(0.1)
frame.change_schedule(i, 99)
root.mainloop()
if __name__ == "__main__":
run()
效果图: