如何将多个鼠标按钮绑定到窗口小部件?

时间:2016-08-10 16:35:41

标签: python button tkinter

我试图制作扫雷游戏。对于每个未分化的方块,我创建了一个按钮。

SELECT

当我在一个无差别的方格上按下鼠标左键时,我正在调用函数my_list = [[0 for i in range(9)] for j in range(9)] all_buttons = [] def creaMatriz(): for y, row in enumerate(my_list): buttons_row = [] for x, element in enumerate(row): boton2 = Button(root, text="", width=6, height=3, command=lambda a=x, b=y: onButtonPressed(a, b)) boton2.grid(row=y, column=x) buttons_row.append(boton2) all_buttons.append(buttons_row) def onButtonPressed(x, y): all_buttons[y][x]['text'] = str(qwer[x][y]) # Some action!!! .... ,并在广场上出现一个数字或一个数字。

在无差别的方格上按鼠标右键,如何调用其他功能。我希望看到' M'在广场上。

完整代码:http://pastebin.com/cWGS4fBp

2 个答案:

答案 0 :(得分:3)

您需要绑定所需的键才能获得此功能。这是一个简单的概念:

result = str_extract_all(text_string_vec, "[0-9]{1,2}/10")
result = lapply(result, function(x) as.numeric(gsub("/10","", x)))

告诉我们您是否正在寻找它。

答案 1 :(得分:0)

您无需做任何特殊操作,只需单独绑定每个鼠标按钮而不是使用command属性。

例如,让我们为鼠标左键和右键创建一个回调:

def onLeftClick(x, y):
    print("you clicked on %x,%y" % (x, y))

def onRightClick(x, y):
    print("you clicked on %x,%y" % (x, y))

接下来,我们可以使用bind方法分别绑定到每个函数。由于我们正在添加自定义绑定,因此我们想要设置按钮的command属性。

def creaMatriz():
    for y, row in enumerate(my_list):
        buttons_row = [] 
        for x, element in enumerate(row):
            button = Button(root, text="", width=6, height=3)
            ...
            button.bind("<1>", lambda event, x=x, y=y: onLeftClick(x,y))
            button.bind("<3>", lambda event, x=x, y=y: onRightClick(x,y))