如何在使用Sun Valley Dark主题时修改字体大小?
实现带自定义字体的Sun Valley Dark主题
问题背景
想使用Sun Valley Dark主题,执行了以下代码启用深色主题:
sv_ttk.set_theme("dark")
同时尝试通过自定义样式修改字体:
@staticmethod def getStdFont(): return Font(family="Courier", size=16) stdFont = getStdFont() s = ttk.Style() s.theme_create( "MyStyle", parent="alt", settings= { "TNotebook": {"configure": {"padding": [2, 2], "font": (stdFont) } }, "TNotebook.Tab": {"configure": {"padding": [2, 2], "font": (stdFont) } }, "TLabel": {"configure": {"font": (stdFont) } }, "TButton": {"configure": {"font": (stdFont) } } }) s.theme_use("MyStyle")
但自定义样式与Sun Valley主题互相覆盖无法融合,也找不到直接修改sv_ttk主题字体的方法,最终需求是实现带有自定义字体的深色主题。
解决方案
核心思路是先加载Sun Valley Dark主题,再基于该主题直接修改组件样式,而非重新创建独立主题。
实现代码
import tkinter as tk from tkinter import ttk, font import sv_ttk # 定义自定义字体 def getStdFont(): return font.Font(family="Courier", size=16) stdFont = getStdFont() # 初始化主窗口 root = tk.Tk() # 先启用Sun Valley Dark主题 sv_ttk.set_theme("dark") # 获取当前样式对象,基于Sun Valley主题修改组件字体 style = ttk.Style() # 逐个修改目标组件的字体配置 style.configure("TNotebook", padding=[2, 2], font=stdFont) style.configure("TNotebook.Tab", padding=[2, 2], font=stdFont) style.configure("TLabel", font=stdFont) style.configure("TButton", font=stdFont) # 测试组件(可根据需求替换为自己的界面) notebook = ttk.Notebook(root) tab1 = ttk.Frame(notebook) tab2 = ttk.Frame(notebook) notebook.add(tab1, text="标签页1") notebook.add(tab2, text="标签页2") notebook.pack(padx=10, pady=10, fill="both", expand=True) label = ttk.Label(tab1, text="测试文本标签") label.pack(pady=10) button = ttk.Button(tab1, text="测试按钮") button.pack(pady=10) root.mainloop()
说明
- 先调用
sv_ttk.set_theme("dark")加载深色主题,此时样式对象已基于Sun Valley主题完成初始化 - 后续的
style.configure()操作会直接在该主题基础上修改组件字体,不会覆盖主题的深色样式 - 若需修改更多组件,继续添加
style.configure("组件类名", font=stdFont)即可
内容的提问来源于stack exchange,提问作者Michelle Nicholes
相关产品推荐
相关产品推荐

