我想改变所有按钮的填充使用一个特定的样式(危险).由于某些原因,此更改仅应用于当前活动的主题,切换主题会将按钮填充恢复为默认值. 您可以通过运行以下操作并切换主题来查看问题.
import tkinter as tk
from tkinter import ttk
import ttkbootstrap as tb
def change_theme(theme, style): style.theme_use(theme.lower().replace(" ", ""))
def display_text(label_text, entry_text): label_text.set(entry_text.get())
def setup_ui(style):
root = style.master
danger = tb.Style()
danger.configure('danger.TButton', padding=0) # Why does this only apply to the first theme?
theme_names_titlecase = [name.replace('_', ' ').title() for name in style.theme_names() if name.lower() in ['darkly', 'simplex']]
default_theme = 'darkly'
current_theme = tk.StringVar(value=default_theme.capitalize())
theme_combo = ttk.Combobox(root, textvariable=current_theme, values=theme_names_titlecase, width=50)
theme_combo.pack(pady=0, side=tk.TOP)
theme_combo.bind("<<ComboboxSelected>>", lambda e: change_theme(current_theme.get(), style))
tb.Button(root, text='Text', bootstyle='danger.TButton').pack(side=tk.TOP, padx=0, pady=0)
tb.Button(root, text='Text', bootstyle='info.TButton').pack(side=tk.TOP, padx=0, pady=0)
return root
if __name__ == "__main__":
default_theme = 'darkly'
style = tb.Style(theme=default_theme)
root = setup_ui(style)
root.mainloop()
我想知道的是
- 为什么我对'danger.TButton'的更改只适用于当前主题?
- 我能解决这个问题吗?不管主题如何,TButton都没有填充?
注意:使用所有ttk小部件和Styles会有相同的结果,所以答案与ttk无关,特别是ttkbootstrap.
多谢了.