37-tkinter-ttkbootstrap- 前言

后面章节内容基本搬运的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 应用程序时,可以使用两种方法。使用tkinterttk。第二个使用新的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()

image-20221216193931155

新方法

使用新的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()

image-20221216194215699

选择主题

默认主题是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()

image-20221216194639507

可以通过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

使用简单的关键字(如primarystriped)应用颜色和类型,而不是使用主要的旧方法Striped.Horizontal.TProgressbar。使用简单的关键字(如primarystriped)应用颜色和类型,而不是使用主要的旧方法Striped.Horizontal.TProgressbar。如果您已经使用Bootstrap进行Web开发,那么您已经熟悉了使用css类的这种方法。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

士别三日,当挖目相待

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值