Tkinter悬停在按钮上->颜色更改

2024-04-20 00:01:24 发布

您现在位置:Python中文网/ 问答频道 /正文

是否有可能在悬停在Button上后更改其背景色?Tkinter的密码是什么?


Tags: 密码tkinterbutton背景色
1条回答
网友
1楼 · 发布于 2024-04-20 00:01:24

遗憾的是,activebackgroundactiveforeground选项似乎只在单击按钮时起作用,而不是在将鼠标悬停在按钮上时起作用。改用<Leave><Enter>事件

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()

对于多个按钮来说,一个更巧妙的方法是创建一个新的按钮类,该类修改默认按钮的行为,以便activebackground在您悬停时实际工作。

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()

相关问题 更多 >