右键单击python tkinter按钮后传递参数

问题描述 投票:0回答:1

我在右键单击按钮后传递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)
python button tkinter
1个回答
0
投票

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

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

希望这有所帮助。

© www.soinside.com 2019 - 2024. All rights reserved.