动态更新Tkinter按钮颜色
问题描述:
我目前正试图让我的程序更改Tkinter按钮的颜色。动态更新Tkinter按钮颜色
我把按钮存储在一个列表中,并且当调用按钮的更新方法时,假设重置所有按钮,然后将通过的按钮的值设置为绿色。下面是一些代码,可以作为的什么,我试图做一个例子:
import tkinter as tk
from tkinter import ttk
def updateButton(value):
for btn in btnList:
btnList[btn].configure(bg = "white")
btnList[value].configure(bg = "green")
root = tk.Tk()
btn1 = ttk.Button(root, text = "BTN 1", command = lambda: updateButton("BTN 1"))
btn1.pack()
btn2 = ttk.Button(root, text = "BTN 2", command = lambda: updateButton("BTN 2"))
btn2.pack()
btnList = { "BTN 1" : btn1, "BTN 2" : btn2 }
root.mainloop()
我遇到的问题是,当我试图运行updateButton
方法,我得到以下错误:
_tkinter.TclError: unknown option "-bg"
我试过将bg
更改为background
,但仍然出现相同的错误。我的代码有什么问题?
答
正如布莱恩奥克利说,TTK按钮没有背景选项,以改变他们的背景的唯一方法是使用一种风格:
import tkinter as tk
from tkinter import ttk
def updateButton(value):
for btn in btnList:
btnList[btn].configure(style='white.TButton')
btnList[value].configure(style='green.TButton')
root = tk.Tk()
style = ttk.Style(root)
style.configure('white.TButton', background='white')
style.configure('green.TButton', background='green')
btn1 = ttk.Button(root, text="BTN 1", command=lambda: updateButton("BTN 1"),
style='white.TButton')
btn1.pack()
btn2 = ttk.Button(root, text="BTN 2", command=lambda: updateButton("BTN 2"),
style='white.TButton')
btn2.pack()
btnList = { "BTN 1" : btn1, "BTN 2" : btn2 }
root.mainloop()
或者,作为OP建议,只需切换到传统知识有后台选项的按钮。
您正在使用来自ttk的按钮,而不是tkinter。就像错误说的那样,ttk按钮没有'background'选项。 –
@BryanOakley啊....所以我想我的选择将是使用tk按钮,而不是ttk。有没有一种方法可以在为每个按钮创建样式之外更改ttk Button的背景? – Skitzafreak
我不认为有。这就是ttk的要点,可以使用主题而不是单独的配置选项。 –