我主要使用普通的 Debian Bookworm 和 Python 3.11.2。
我喜欢默认的“主题”tkinter (ttk) 小部件,除了检查按钮之外。如果我从“默认”主题更改为“alt”主题(在 tkinter 中),检查按钮看起来很棒,但其他小部件看起来很古董:)
默认主题:
“替代”主题:
我想修改
ttk.Checkbutton()
,使其看起来像使用“alt”主题。我了解如何使用 ttk.Style()
来表示背景颜色、字体大小等,但我不知道如何将图形从实心正方形更改为复选标记。
有什么办法可以做到这一点吗?我愿意在 python 中调整 tkinter,但我希望我不需要学习 tcl/tk...
使用的代码:
import tkinter as tk
from tkinter import ttk
root = tk.Tk()
text = tk.StringVar(value="Entry")
pb = ttk.Button(root, text="Button")
ent = ttk.Entry(root, textvar=text)
cb1 = ttk.Checkbutton(root, text="Check1")
cb2 = ttk.Checkbutton(root, text="Check2")
pb.grid(column=0, row=0, pady=5)
ent.grid(column=0, row=1, padx=10, pady=5)
cb1.grid(column=0, row=2)
cb2.grid(column=0, row=3)
cb1.state(['selected', '!alternate'])
cb2.state(['!alternate'])
root.mainloop()
为“alt”主题添加以下内容:
style = ttk.Style()
style.theme_use('alt')
要自定义 ttk.Checkbutton 以使其在“alt”主题中显示,同时将其他小部件保留在默认主题中,您可以尝试有选择地配置 ttk.Checkbutton 的样式,而无需切换整个主题。例如:
import tkinter as tk
from tkinter import ttk
root = tk.Tk()
# configure the 'Checkbutton' style for 'alt' theme
style = ttk.Style()
style.theme_use('default')
# create a new style for 'Checkbutton based on 'alt' theme
style.configure("Custom.TCheckbutton", indicatorcolor="#000000",
indicatorrelief="groove", indicatordiameter=10, padding=5)
# Apply the style
text = tk.StringVar(value="Entry")
pb = ttk.Button(root, text="Button")
ent = ttk.Entry(root, textvar=text)
cb1 = ttk.Checkbutton(root, text="Check1", style="Custom.TCheckbutton")
cb2 = ttk.Checkbutton(root, text="Check2", style="Custom.TCheckbutton")
# Layout
pb.grid(column=0, row=0, pady=5)
ent.grid(column=0, row=1, padx=10, pady=5)
cb1.grid(column=0, row=2)
cb2.grid(column=0, row=3)
root.mainloop()
希望这有帮助。