如何更改按钮的颜色?
Posted
技术标签:
【中文标题】如何更改按钮的颜色?【英文标题】:How can I change a button's color back? 【发布时间】:2021-11-07 09:01:09 【问题描述】:我正在使用 python tkinter 制作我的 gui,我希望用户能够使用键盘上的一个键来模拟按钮按下。有了这个,我需要通过改变它的颜色让它看起来像他们按下了按钮。到目前为止我有这个:
def clickedButton(event, number, button):
global outputCalc
outputCalc.config(text = number)
button.configure(bg = "red")
numbers1Button = Button(root, text="1", padx=90, pady=90, bg='#FFFFFF', activebackground='#D9D9D9')
numbers1Button.bind('<Button-1>', lambda event: clickedButton(event, 1, numbers1Button))
root.bind('<Key-1>', lambda event: clickedButton(event, 1, numbers1Button))
当我让它休眠然后将背景颜色改回白色时,它什么也不做。我也尝试了一些其他的方法,但都没有成功。但是,当我使用此代码时,它成功地将按钮的颜色更改为红色。有什么办法可以使这项工作?另外,如果有更简单的方法,我想知道。谢谢!
【问题讨论】:
【参考方案1】:请注意,tkinter mainloop
只能在收回控制权时更新小部件,即在 clickedButton()
返回之后。所以如果你在函数里面把按钮改成红色,休眠再改回白色,那么你在函数之后就只会看到白色的按钮了。
您可以使用.after()
而不是sleep()
在延迟一段时间后将按钮更改为白色:
def clickedButton(event, number, button):
...
button.configure(bg="red")
button.after(100, lambda: button.configure(bg="white"))
但是我建议将<KeyRelease-1>
绑定到相同的函数并根据绑定事件类型确定颜色:
def clickedButton(event, number, button):
...
color = "red" if event.type == EventType.KeyPress else "white"
button.configure(bg = color)
...
root.bind('<Key-1>', lambda event: clickedButton(event, 1, numbers1Button))
root.bind('<KeyRelease-1>', lambda event: clickedButton(event, 1, numbers1Button))
【讨论】:
谢谢它的工作,这不相关,但你似乎有经验,你知道为什么这不起作用吗? string = outputCalc.cget("text") outputCalc.config(text = string) @DPGGintec 您正在使用当前文本更新文本,因此您看不到任何更改。以上是关于如何更改按钮的颜色?的主要内容,如果未能解决你的问题,请参考以下文章