Дождитесь второго щелчка мыши на холсте

Я играю с Tkinter и Python, и я хотел бы щелкнуть две позиции на холсте, а затем провести линию между двумя точками.

Используя метод .bind(), я могу легко вызвать функцию, которая принимает положение курсора и устанавливает первую точку, но я не знаю, как заставить функцию ждать второго щелчка мыши. Конечно, есть обходные пути, но я хотел бы знать, могу ли я заставить функцию бесконечно ждать до второго щелчка.


person Mark Daly    schedule 13.02.2016    source источник


Ответы (1)


Нет необходимости ждать. По первому клику установите флаг, по второму клику проверьте флаг

class Example(...):
    def __init__(...):
        self.first_coord = None
        ...
        canvas.bind("<1>", self.on_click)
    def on_click(self, event):
        if self.first_coord is None:
            self.first_coord = (event.x, event.y)
        else:
            second_coord = (event.x, event.y)
            <draw the line here>
            self.first_coord = None
person Bryan Oakley    schedule 13.02.2016
comment
@ Брайан: должно быть else:, а не elee:, верно? ясно для меня, но для лучшего чтения / полностью правильного кода это потребует одного изменения. - person R4PH43L; 21.04.2016