簡體   English   中英

Tkinter 懸停在按鈕上-> 顏色變化

[英]Tkinter Hovering over Button -> Color change

懸停在Button上后是否有可能更改按鈕的背景顏色? Tkinter 中的代碼是什么?

遺憾的是, 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()

正如評論中指出的,如果我們想要多個按鈕,我們可以將按鈕綁定到使用單擊事件的事件數據來更改按鈕背景的函數。

import tkinter as tk

def on_enter(e):
    e.widget['background'] = 'green'

def on_leave(e):
    e.widget['background'] = 'SystemButtonFace'

root = tk.Tk()
myButton = tk.Button(root,text="Click Me")
myButton.grid()


myButton.bind("<Enter>", on_enter)
myButton.bind("<Leave>", on_leave)

myButton2 = tk.Button(root,text="Click Me")
myButton2.grid()


myButton2.bind("<Enter>", on_enter)
myButton2.bind("<Leave>", on_leave)

root.mainloop()

對多個按鈕執行此操作的一種更靈活的方法是創建一個新的 Button 類,該類修改默認按鈕的行為,以便在懸停時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()

干凈利落

在您的Button對象屬性中,您有標簽: activebackgroundactiveforeground ,只要與創建的實例進行交互就會激活它們。 即:您創建的按鈕對象。

例如

from tkinter import *

root = Tk()

button = Button(root, text="Click me", bg="#000", fg="#fff", activebackground="#f00", activeforeground="#fff")
button.pack()

root.mainloop()

它在 Linux python3 上對我來說在鼠標懸停時完美運行。

<\/blockquote>

不幸的是,它在 Windows 10 上根本不起作用

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM