I am facing issue with tkinter button style "_tkinter.TclError: Invalid state name a"

I am facing issue with tkinter button style "_tkinter.TclError: Invalid state name a"

我试图做一个使用 tkinter 制作屏幕键盘的练习,我几乎完成了这个程序,它工作正常,但问题是当我做一些最后一刻的润色时,比如设置键的样式我遇到了错误。

style=ttk.Style()
style.configure("mybutton.TButton", font=("montserrat", "10", "bold"), 
                foreground="white", background="green")
style.configure("myBigbutton.TButton", font=("monserrat", "24", "bold"), 
                foreground="white", background="green")
style.map("myButton.TButton", background=('active', 'green'))

我正在为两种不同类型的按钮定义两种不同的样式,当我使用这种 map 条件时,我收到错误 _tkinter.TclError: Invalid state name a。如果我将 active 更改为 pressed 我会得到 _tkinter.TclError: Invalid state name p 作为错误。

根据 Style.map() 方法的文档,

Each key in kw is an option and each value should be a list or a tuple (usually) containing statespecs grouped in tuples, lists, or some other preference.

这只是意味着您需要 嵌套 statespecs 的值 - 每个都是序列 - 对于外部 list 内的 background 关键字或 tuple 即使只有一个.

换句话说,你需要写下如下所示的值:

style.map("myButton.TButton", background=[('active', 'green')])