首页 > 解决方案 > 右键单击 python tkinter 按钮后传递参数

问题描述

右键单击按钮后,我在传递 2 个整数时遇到问题。这是我的代码

def r_click(x,y):
    print(x,y)
for x in range(m):
    pole.append([])

    for y in range(n):

        pole[x].append(Button(game_window,width='50',height='40',image=photo,command=lambda x=x, y=y: l_click(x,y)))

        pole[x][y].bind('<Button-3>',lambda x=x, y=y: r_click(x,y))
        pole[x][y].grid(row=x, column=y)

标签: pythonbuttontkinter

解决方案


默认情况下,所有bind事件都将参数传递给回调函数,因此要传递其他参数,您必须在函数开头提供一个额外参数,lambda其中第一个参数将始终接收事件触发时的默认参数。在您的bind函数x中正在获取默认参数,并且y正在获取它的假设。要解决这个问题,只需像这样添加另一个参数。

pole[x][y].bind('<Button-3>', lambda evt, x=x, y=y: r_click(x,y))

希望这有帮助。


推荐阅读