我正在尝试为我已经实现的多个按钮添加一个悬停选项,但我想在课堂上这样做以节省我单独为每个按钮添加选项。 我在python中编码并使用tkinter作为我的GUI。
class GUIButtons():
def __init__(self, window):
self.window = window
self.Calculate = Button(window, command=GetUnits, text="Calculate", width = 19, background = "dark blue", fg="white")
self.Calculate.grid(row=1, column=4, sticky=NSEW)
self.ShowMethod = Button(window, command=ShowMethod, text="Show method", width = 19, background = "darkblue", fg="white")
self.ShowMethod.grid(row=1, column= 5, sticky=NSEW)
self.Submit = Button(window, command = lambda: GetCoordinate(Message), text="Submit", width = 6, height = 1, background = "dark blue", fg="white", font = 11)
self.Submit.grid(row=3, column = 3, sticky = NSEW)
self.Displacement = Button(window, text="Displacement", background = "Dark Blue", fg="white", font=11)
self.Displacement.grid(row=2, column=1, sticky= N)
不确定如何将悬停选项绑定一次,以便申请我的所有按钮。
任何帮助都将受到高度赞赏!
答案 0 :(得分:2)
请参阅Instance and Class Bindings
但是Tkinter还允许你在类上创建绑定 应用水平;实际上,您可以在四种不同的上创建绑定 等级:
- widget类,使用 bind_class (Tkinter使用它来提供 标准绑定)
和示例
顺便说一句,如果你真的想改变所有文字的行为 应用程序中的小部件,以下是如何使用bind_class方法:
top。 bind_class (“文字”,“”,lambda e:无)
因此,bind_class
与<Enter>
和<Leave>
一起使用即可。
-
编辑:示例 - 当鼠标enter/hover
任意按钮时,test()
将被调用。
from tkinter import *
# ---
def test(event):
print(event)
# ---
window = Tk()
# created befor binding
Button(window, text="Button #1").pack()
Button(window, text="Button #2").pack()
Button(window, text="Button #3").pack()
window.bind_class('Button', '<Enter>', test)
# created after binding
Button(window, text="Button #4").pack()
window.mainloop()
-
您还可以创建自己的Widget来更改现有的Widget。
红色按钮:
from tkinter import *
# ---
class RedButton(Button):
def __init__(self, parent, **options):
Button.__init__(self, parent, **options)
self['bg'] = 'red'
# or
#self.config(bg='red')
# ---
window = Tk()
RedButton(window, text="Button #1").pack()
RedButton(window, text="Button #2").pack()
RedButton(window, text="Button #3").pack()
window.mainloop()
或
class RedButton(Button):
def __init__(self, parent, **options):
Button.__init__(self, parent, bg='red', **options)
-
修改强>
如果您只需要在悬停时更改按钮颜色,则无需绑定功能。按钮有activebackground=
和activeforeground=
。
import tkinter as tk
root = tk.Tk()
btn = tk.Button(root, text="HOVER", activebackground='blue', activeforeground='red')
btn.pack()
root.mainloop()
请参阅Button
编辑:它在Windows,Linux和OS X上的行为可能不同