关于:
ttkbootstrap是一个tkinter的美化库, 为tkinter提供了许多现代化的主题扩展
官方文档: https://ttkbootstrap.readthedocs.io/en/latest/

安装:
1. pypi安装
python -m pip install ttkbootstrap
2. Github安装
python -m pip install git+https://github.com/israel-dryer/ttkbootstrap
3. 测试
在Python环境中导入ttkbootstrap如果不报错就代表安装成功:
>>> import ttkbootstrap
教程:
创建应用程序
在构建ttkbootstrap窗口应用程序时, 你可以使用两种方式:
使用传统tkinter或ttk来构建;
使用ttkbootstrap模块中的Window类创建, 这可以更轻松的配置窗口;
1. 传统方法
此方法更为熟悉但存在一定差异:
不是直接导入ttkbootstrap ttk
使用参数调用关键字, 而不是直接使用参数bootstyle style
import tkinter as tk
import ttkbootstrap as ttk
from ttkbootstrap.constants import *
root = tk.Tk() # 传统方法创建
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()

2. 新方法
使用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主题, 但你可以独立通过对象或使用类使用所有内置主题来启动应用程序
import ttkbootstrap as ttk
# 传统方法
root = ttk.Tk()
style = ttk.Style("darkly")
# 新方法
root = ttk.Window(themename="darkly")
使用主题部件
ttkbootstrap部件拥有数十种预定义样式, 这些样式是使用修改构件类型和颜色的关键字应用的, 为每个主题定义实际颜色值
例如: 使用outline关键字将会绘制有轮廓类型的按钮, 使用info关键字将更改按钮的颜色
1. 样式颜色
下面示例演示了每种内置样式颜色的按钮
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对象, 也可以使用对象的属性
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)
2. 样式类型
关键字可以控制所显示的小部件的类型, 下面示例显示了一个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()

如你所见, outline关键字可以将一个实心按钮转换成轮廓按钮
3. 关键字用法
ttkbootstrap的样式引导十分灵活, 它会使用正则表达式进行判断引导
以下所有变体都是合法的:
"info-outline"
"infooutline"
"info outline"
"outline-info"
("info", "outline")
(INFO, OUTLINE)
字符串中官方推荐分隔符是短横线( - )
参考文章: https://ttkbootstrap.readthedocs.io/en/latest/