如何使用 tkinter ttk.Checkbutton 模拟另一个主题的样式

问题描述 投票:0回答:1

我主要使用普通的 Debian Bookworm 和 Python 3.11.2。

我喜欢默认的“主题”tkinter (ttk) 小部件,除了检查按钮之外。如果我从“默认”主题更改为“alt”主题(在 tkinter 中),检查按钮看起来很棒,但其他小部件看起来很古董:)

默认主题:

default

“替代”主题:

alt

我想修改

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')
python tkinter
1个回答
0
投票

要自定义 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()

希望这有帮助。

© www.soinside.com 2019 - 2024. All rights reserved.