Получить местоположение пикселя по щелчку мыши в TKinter

Я совершенно новичок в Python и не смог найти способ обойти эту проблему. У меня есть графический интерфейс, использующий TKinter, который отображает изображение с помощью Label. Я хотел бы, чтобы пользователь мог щелкнуть два места на изображении и использовать эти два пикселя в другом месте.

Ниже приведен базовый код, который я использую до сих пор, но я не могу вернуть расположение пикселей. Я считаю, что bind - это не то, что я хочу использовать, есть ли другой вариант?

px = []
py = []

def onmouse(event):
        px.append(event.x)
        py.append(event.y)
        return px,py

self.ImgPanel.bind('<button-1>',onmouse)

Если я попытаюсь использовать:

px,py = self.ImgPanel.bind('<button-1>',onmouse)

Я получаю сообщение об ошибке "Слишком много значений для распаковки"


person user3115691    schedule 18.12.2013    source источник
comment
Лучшее, что вы можете сделать, — это написать наименьшую возможную программу, иллюстрирующую проблему, которую вы пытаетесь решить. Часто само действие делает решение очевидным. По крайней мере, это дает нам отправную точку. Фрагменты кода подходят, когда вы спрашиваете об определенной строке кода, но если вы спрашиваете о более широкой теме, лучше всего начинать с минимальной рабочей программы.   -  person Bryan Oakley    schedule 18.12.2013


Ответы (1)


bind - это то, что вам нужно, если вы хотите зафиксировать координату x, y щелчка. Однако функции, вызываемые из привязок, не «возвращаются». Технически это так, но они возвращают значение внутренностям Tkinter.

Что вам нужно сделать, так это установить экземпляр или глобальную переменную в связанной функции. В коде, который вы включили в свой вопрос, если вы добавите global px,py, вы сможете использовать эти значения в другом коде.

person Bryan Oakley    schedule 18.12.2013