(我在类似问题上发布了这个答案,我认为这也适用于这种情况:)
对于我的生活,我无法仅使用 configure 方法让它工作。最终起作用的是将所需的颜色(在我的情况下为按钮)设置为StringVar()
(直接设置为get()
),然后也使用按钮上的配置。
我为我最需要的用例写了一个非常通用的示例(这是很多按钮,我需要引用它们(在 Python 2 和 3 中测试):
蟒蛇 3:
import tkinter as tk
蟒蛇2:
import Tkinter as tk
代码
root = tk.Tk()
parent = tk.Frame(root)
buttonNames = ['numberOne','numberTwo','happyButton']
buttonDic = {}
buttonColors = {}
def change_color(name):
buttonColors[name].set("red")
buttonDic[name].config(background=buttonColors[name].get())
for name in buttonNames:
buttonColors[name] = tk.StringVar()
buttonColors[name].set("blue")
buttonDic[name] = tk.Button(
parent,
text = name,
width = 20,
background = buttonColors[name].get(),
command= lambda passName=name: change_color(passName)
)
parent.grid(row=0,column=0)
for i,name in enumerate(buttonNames):
buttonDic[name].grid(row=i,column=0)
root.mainloop()