Sun Valley ttk 主题
只需两行代码,让您的 Tkinter 应用程序看起来比以往更好!
安装
该主题可以轻松地作为 Python 包安装
pip install sv-ttk
使用
[!注意] 主题只会应用于可主题化的(
tkinter.ttk
)组件,而不是常规的 Tkinter 组件,它们只能受益于配色方案。
详细文档请访问 wiki 页面。
import tkinter
from tkinter import ttk
import sv_ttk
root = tkinter.Tk()
button = ttk.Button(root, text="点击我!")
button.pack()
# 这里是魔法发生的地方
sv_ttk.set_theme("dark")
root.mainloop()
技巧和窍门
我们的目的是保持 sv-ttk
包尽可能简单,同时使其易于与其他库集成。
将主题设置为系统主题
您可以使用 darkdetect 包来检测系统配色方案。以下是一个示例:
import darkdetect
sv_ttk.set_theme(darkdetect.theme())
只需额外导入并将 darkdetect.theme()
的结果传递给 sv_ttk.set_theme()
。就这么简单!
Windows 上的深色模式标题栏
当主题设置为深色时,Sun Valley 主题不会更改 Windows 上的标题栏颜色。您可以使用 pywinstyles 来实现这一点。以下是一个示例:
import pywinstyles, sys
def apply_theme_to_titlebar(root):
version = sys.getwindowsversion()
if version.major == 10 and version.build >= 22000:
# 在 Windows 11 上将标题栏颜色设置为背景色以获得更好的外观
pywinstyles.change_header_color(root, "#1c1c1c" if sv_ttk.get_theme() == "dark" else "#fafafa")
elif version.major == 10:
pywinstyles.apply_style(root, "dark" if sv_ttk.get_theme() == "dark" else "normal")
# 一种在 Windows 10 上更新标题栏颜色的取巧方法(它不像 Windows 11 那样立即更新)
root.wm_attributes("-alpha", 0.99)
root.wm_attributes("-alpha", 1)
# 使用示例(将 `root` 替换为您的主窗口/Toplevel 窗口的引用)
apply_theme_to_titlebar(root)
请注意,在 Windows 10 上,由于其限制,您只能将标题栏的颜色设置为深色模式下的黑色和浅色模式下的白色。在 Windows 11 上,标题栏可以设置为任何颜色。
[!警告]
apply_theme_to_titlebar
仅适用于 Windows,因此在调用此函数之前,您应该检查平台是否为 Windows。
以下是调用 set_title_bar_color()
后窗口的外观:
截图
Windows 10
Windows 11
想要看更多?
查看我的其他 ttk 主题!