首页 > 解决方案 > 是否可以为所有按钮设置鼠标悬停功能?(仅在一项功能中)

问题描述

我的鼠标悬停功能有问题

这是一个例子(不是问题):

def on_enter(e):
    navi_frame.place(x=0, y=0)

def on_leave(e):
    navi_frame.place(x=-200, y=0)

#navigation frame on left side
navi_frame = Frame(root, bg="black", width=250, height=1200)
navi_frame.place(x=0, y=0)
navi_frame.bind("<Enter>", on_enter)
navi_frame.bind("<Leave>", on_leave)

这很好用,但我有很多按钮。我的问题是我为每个按钮(或框架)编写了一个新功能。我尝试了不同的方法,只为所有按钮创建一个功能......但是所有带有 if 语句等的东西都不起作用(我试过了)。我没有找到任何指导,所以我想问你们...... 还是不可能,我需要为每个按钮编写一个新功能?

标签: pythontkinter

解决方案


您可以通过列出所有按钮然后使用 for loop 来做到这一点。如下所示

b=[Button(r, text=x) for x in range(10)]

接着

for x in range(10):
    b[x].bind("<Button>" , lambda event,i=x:fun(i))

其中 fun 是以整数作为输入的函数

def fun(ButtonNumber):
    print(ButtonNumber)

推荐阅读