Tkinter悬停在按钮上->颜色变化 [英] Tkinter Hovering over Button -> Color change
问题描述
悬停在Button
上后是否可以更改其背景颜色? Tkinter中的代码是什么?
Is there a possibility to change the background-color of a Button
after hovering on it? What is the code for this in Tkinter?
推荐答案
可悲的是,activebackground
和activeforeground
选项仅在您单击按钮时才起作用,而不是将鼠标悬停在该按钮上时才起作用.改为使用<Leave>
和<Enter>
事件
Sadly the activebackground
and activeforeground
options only seem to work when you are clicking on the button rather than when you hover over the button. Use the <Leave>
and <Enter>
events instead
import tkinter as tk
def on_enter(e):
myButton['background'] = 'green'
def on_leave(e):
myButton['background'] = 'SystemButtonFace'
root = tk.Tk()
myButton = tk.Button(root,text="Click Me")
myButton.grid()
myButton.bind("<Enter>", on_enter)
myButton.bind("<Leave>", on_leave)
root.mainloop()
对多个按钮执行此操作的一种简便方法是创建一个新的Button类,该类修改默认按钮的行为,以使activebackground
在您悬停时真正起作用.
A slicker way to do it for multiple buttons would be to create a new Button class that modifies the behavior of the default button so that the activebackground
actually works when you hover.
import tkinter as tk
class HoverButton(tk.Button):
def __init__(self, master, **kw):
tk.Button.__init__(self,master=master,**kw)
self.defaultBackground = self["background"]
self.bind("<Enter>", self.on_enter)
self.bind("<Leave>", self.on_leave)
def on_enter(self, e):
self['background'] = self['activebackground']
def on_leave(self, e):
self['background'] = self.defaultBackground
root = tk.Tk()
classButton = HoverButton(root,text="Classy Button", activebackground='green')
classButton.grid()
root.mainloop()
这篇关于Tkinter悬停在按钮上->颜色变化的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!