如果你要模拟一个耗时任务,并逐步更新进度条,可以用如下方式:
python
深色版本
import tkinter as tk
from tkinter import ttk
import time
import threading
def simulate_task():
progress["value"] = 0
for i in range(100):
time.sleep(0.05) # 模拟耗时操作
progress["value"] += 1 # 手动增加进度
root.update_idletasks() # 刷新界面
print("任务完成!")
def start_task():
threading.Thread(target=simulate_task).start()
# 创建主窗口
root = tk.Tk()
root.title("手动控制进度条")
root.geometry("300x150")
# 创建进度条
progress = ttk.Progressbar(
root,
orient="horizontal",
length=250,
mode="determinate"
)
progress.pack(pady=20)
# 开始按钮
start_button = tk.Button(root, text="开始任务", command=start_task)
start_button.pack()
# 主循环启动
root.mainloop()
你可以使用 ttk.Style 来自定义进度条的颜色、高度等样式(Windows 下可能不完全支持):
python
深色版本
style = ttk.Style()
style.configure("red.Horizontal.TProgressbar", foreground="red", background="red")
progress = ttk.Progressbar(root, style="red.Horizontal.TProgressbar", ...)
✅ 六、总结
| 功能 | 方法 |
|---|---|
| 创建进度条 | ttk.Progressbar(...) |
| 自动更新 | .start(interval) |
| 停止自动更新 | .stop() |
| 手动更新 | progress["value"] += x |
| 设置最大值 | maximum=100 |
| 获取当前值 | progress["value"] |
✅ 小贴士
- 如果你在 GUI 中执行耗时任务,请务必使用多线程(如
threading),否则会卡住界面。 - Tkinter 是单线程事件模型,不能直接在主线程做长时间阻塞操作。