我目前正在尝试让我的程序更改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
,但仍然遇到同样的错误。我的代码出了什么问题?
答案 0 :(得分:1)
正如Bryan Oakley所说,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建议的那样,只需切换到具有背景选项的tk按钮。