Tkinter悬停在按钮上->颜色变化 [英] Tkinter Hovering over Button -> Color change

查看:307
本文介绍了Tkinter悬停在按钮上->颜色变化的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

悬停在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?

推荐答案

可悲的是,activebackgroundactiveforeground选项仅在您单击按钮时才起作用,而不是将鼠标悬停在该按钮上时才起作用.改为使用<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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆