后面章节内容基本搬运的ttkbootstrap文档,可根据需要直接去ttkbootstrap官网读取原英文。文档
前言
ttkbootstrap:tkinter的主题扩展,受Bootstrap启发的按需现代平面风格主题。
安装
python -m pip install ttkbootstrap # 通过PyPI安装
python -m pip install -i https://pypi.tuna.tsinghua.edu.cn/simple ttkbootstrap # PyPI清华镜像源
python -m pip install git+https://github.com/israel-dryer/ttkbootstrap # 通过Github安装 未经过测试的版本(可能会出错)
创建应用程序
在构建 ttkbootstrap 应用程序时,可以使用两种方法。使用tkinter和ttk。第二个使用新的Window类来简化整个过程。
传统方法
此方法使用熟悉的模式。但是,存在一些差异:
- 导入
ttkbootstrap
而不是ttk
- 使用
bootstyle
参数添加关键字,而不是使用style
参数。
import tkinter as tk
import ttkbootstrap as ttk
from ttkbootstrap.constants import *
root = tk.Tk()
root.geometry("200x50")
b1 = ttk.Button(root, text="Button 1", bootstyle=SUCCESS)
b1.pack(side=LEFT, padx=5, pady=10)
b2 = ttk.Button(root, text="Button 2", bootstyle=(INFO, OUTLINE))
b2.pack(side=LEFT, padx=5, pady=10)
root.mainloop()
新方法
使用新的Window类生成相同的结果,可以在 API 文档中阅读有关该类的信息。
Window
类使用参数来设置许多属性和质量,而这些属性和质量只能在使用Tk
类时使用方法进行设置。此外,Style
对象会自动附加到Window
对象,如后面的示例所示。
import ttkbootstrap as ttk
from ttkbootstrap.constants import *
root = ttk.Window()
b1 = ttk.Button(root, text="Button 1", bootstyle=SUCCESS)
b1.pack(side=LEFT, padx=5, pady=10)
b2 = ttk.Button(root, text="Button 2", bootstyle=(INFO, OUTLINE))
b2.pack(side=LEFT, padx=5, pady=10)
root.mainloop()
选择主题
默认主题是litera,但您可以通过单独使用Style
对象或通过Window
类使用任何内置主题来启动应用程序。
import ttkbootstrap as ttk
# 传统方法
root = ttk.Tk()
style = ttk.Style("darkly")
# 新方法
root = ttk.Window(themename="darkly")
主题小部件
ttkbootstrap 小部件具有数十种预定义的样式 ,这些样式使用修改小部件类型和颜色的关键字*进行应用。每个主题都定义了实际的颜色值。
例如,使用关键字outline将绘制一个具有外框 类型 的按钮,但使用关键字info将更改外框和文本的 颜色 。
样式颜色:
下面的示例显示了每种颜色的按钮
import ttkbootstrap as ttk
from ttkbootstrap.constants import *
root = ttk.Window()
b1 = ttk.Button(root, text='primary', bootstyle=PRIMARY)
b1.pack(side=LEFT, padx=5, pady=5)
b2 = ttk.Button(root, text='secondary', bootstyle=SECONDARY)
b2.pack(side=LEFT, padx=5, pady=5)
b3 = ttk.Button(root, text='success', bootstyle=SUCCESS)
b3.pack(side=LEFT, padx=5, pady=5)
b4 = ttk.Button(root, text='info', bootstyle=INFO)
b4.pack(side=LEFT, padx=5, pady=5)
b5 = ttk.Button(root, text='warning', bootstyle=WARNING)
b5.pack(side=LEFT, padx=5, pady=5)
b6 = ttk.Button(root, text='danger', bootstyle=DANGER)
b6.pack(side=LEFT, padx=5, pady=5)
b7 = ttk.Button(root, text='light', bootstyle=LIGHT)
b7.pack(side=LEFT, padx=5, pady=5)
b8 = ttk.Button(root, text='dark', bootstyle=DARK)
b8.pack(side=LEFT, padx=5, pady=5)
root.mainloop()
可以通过Style.colors
对象使用更简单的方式创建这些按钮,其中包含对所有颜色的引用主题,它也是一个 迭代器 。
Style
对象,可以使用Style
类,或使用Window
对象的style
属性。
import ttkbootstrap as ttk
from ttkbootstrap.constants import *
root = ttk.Window()
for color in root.style.colors:
b = ttk.Button(root, text=color, bootstyle=color)
b.pack(side=LEFT, padx=5, pady=5)
root.mainloop()
样式类型
keyword可以控制显示的小部件的类型。考虑 以下示例显示了一个solid和一个outline按钮。它们 都是按钮,但具有不同的类型。
import ttkbootstrap as ttk
from ttkbootstrap.constants import *
root = ttk.Window()
b1 = ttk.Button(root, text="Solid Button", bootstyle=SUCCESS)
b1.pack(side=LEFT, padx=5, pady=10)
b2 = ttk.Button(root, text="Outline Button", bootstyle=(SUCCESS, OUTLINE))
b2.pack(side=LEFT, padx=5, pady=10)
root.mainloop()
关键字用法
关于使用关键字的最后一点……bootstyle参数非常灵活。关键字的外观并不重要。
后台有一个正则表达式,用于分析输入并将其转换为适当的 ttk 样式。
可以传入一串关键字,也可以传入可迭代的关键字,例如使用列表
或元组
。
以下所有变体都是合法的,并且将产生相同的样式。
"info-outline"
"infooutline"
"info outline"
"outline-info"
("info", "outline")
(INFO, OUTLINE)
建议的关键字分隔符为短划线
如果使用字符串作为关键字,建议尽可能使用短划线分隔关键字,如上面的 第一个 示例所示。
如果使用常量,并且您使用的是多个关键字,则您应该使用
列表
或元组
,如上面的 最后一个 示例所示。
传统支持
tkinter
小部件不是库的重点,但每个主题应用了一些默认样式到旧小部件,以便它们不会突出。
造成这种情况的一个重要原因是,一些ttk
小部件在引擎下使用tkinter
小部件组件。因此,还必须设置这些样式,以应组合框中的弹出列表或菜单按钮中的"菜单"具有适当的样式之类的情况。
以下是使用传统tkinter
小部件的浅色和深色主题的示例。
预定义样式
大量漂亮的预定义构件样式,如轮廓和圆形切换按钮。
简单的关键字 API
使用简单的关键字(如primary和striped)应用颜色和类型,而不是使用主要的旧方法Striped.Horizontal.TProgressbar。使用简单的关键字(如primary和striped)应用颜色和类型,而不是使用主要的旧方法Striped.Horizontal.TProgressbar。如果您已经使用Bootstrap进行Web开发,那么您已经熟悉了使用css类的这种方法。