当前位置:首页>python>python高阶:26、tkinter库(ttk模块Progressbar组件)

python高阶:26、tkinter库(ttk模块Progressbar组件)

  • 2026-10-11 07:12:10
python高阶:26、tkinter库(ttk模块Progressbar组件)
1、Progressbar组件介绍

ttk.Progressbar是Tkinter主题化组件库(ttk)中的进度条组件,用于直观展示任务的完成进度(如文件下载、数据处理、批量操作等),支持确定模式(已知总进度)和不确定模式(未知总进度),界面比原生Tkinter 进度条更美观。

2、模块导入
import tkinter as tkfrom tkinter import ttk    #从tkinter模块导入子模块ttk
3、主窗口的创建
import tkinter as tkfrom tkinter import ttk    #从tkinter模块导入子模块ttkroot=tk.Tk()root.title("Progressbar组件")root.geometry("300x300+600+200")tk.mainloop()
4、ttk.Progressbar组件的核心属性
属性
参数
master

父窗口,指定进度条属于哪个窗口。

orient

进度条方向,

可选 tk.HORIZONTAL (水平) 

或 tk.VERTICAL (垂直)。

mode

模式,可选 'determinate' (确定模式) 或 'indeterminate' (不确定模式)。

length

进度条长度 (水平模式为宽度,垂直模式为高度),单位:像素。

maximum

最大值,默认 100。

value

当前值,value/maximum 即为进度百分比。

variable

关联的变量,通常设为 

tk.IntVar(),改变该变量时进度条会自动同步更新

style

使用的自定义样式名,用于外观定制。

text

在进度条内部显示的文字,仅水平模式下有效。

phase

只读属性,配合动画效果使用。

anchor, font, foreground, justify, wraplength

配合 text 选项控制文字的显示位置、字体、颜色、对齐方式等

5、ttk.Progressbar组件的核心方法
方法
说明

start(interval=None)

启动进度条动画。interval 为步进间隔 (毫秒),默认 50 ms

step(amount=None)

将 value 增加指定步长。amount 为正整数,默认 1.0

stop()

停止进度条动画。

configure(**kw)

动态修改参数

(如value、mode)

6、确定模式进度条示例
import tkinter as tkfrom tkinter import ttk    #从tkinter模块导入子模块ttkroot=tk.Tk()root.title("Progressbar组件")root.geometry("300x300+600+200")#创建一个水平、确定模式的进度条progress=ttk.Progressbar(root,orient="horizontal",length=300,mode="determinate",maximum=101)progress.pack(pady=20)def update_progress():    progress.step(10)  # 设定每次点击增加10%    # 获取当前值,判断是否已到达最大值    current_value=progress['value']    print(current_value)    print(progress['maximum'])    if current_value>=100:        # 进度条已满,停止按钮的点击效果或做其他处理        progress_btn.config(state=tk.DISABLED)        print("任务完成!")progress_btn=ttk.Button(root,text="增加进度",command=update_progress)progress_btn.pack(pady=10)tk.mainloop()
7、不确定模式进度条示例
import tkinter as tkfrom tkinter import ttk    #从tkinter模块导入子模块ttkroot=tk.Tk()root.title("Progressbar组件")root.geometry("300x300+600+200")def start_long_task():    progress.start()    # 模拟一个耗时5.5秒的“长任务”    # 使用 after 方法模拟,避免界面卡死    root.after(5500, stop_progress)def stop_progress():    progress.stop()    status_label.config(text="任务已完成!")    print("长任务结束,进度条已停止。")#创建一个水平、确定模式的进度条progress=ttk.Progressbar(root,orient="horizontal",length=300,mode="indeterminate")progress.pack(pady=20)progress_btn=ttk.Button(root,text="开始耗时任务",command=start_long_task)progress_btn.pack(pady=10)# 状态提示标签status_label=ttk.Label(root,text="点击按钮开始任务")status_label.pack(pady=10)tk.mainloop()

最新文章

随机文章