Python tkinter: обработка событий нажатия кнопок по-разному кнопки включения / выключения

#python #button #tkinter

#python #кнопка #tkinter

Вопрос:

Вопрос: Кажется, что события нажатия кнопок в tkinter указывают местоположение щелчка w / r в верхнем левом углу окна. Однако, когда вы нажимаете на виджет кнопки, происходит событие нажатия кнопок, но заданные значения местоположения x, y относятся к верхнему левому углу кнопки. Как я могу заставить событие нажатия кнопок происходить в месте w / r в верхнем левом углу окна, а не на кнопке?

Подробности: У меня есть программа tkinter, которая позволяет пользователям рисовать на картинке (макет ниже), но встречается только ниже определенного y значения. Если вы переместите курсор ниже этого порога (он же ниже рисунка и в область с инструкциями), функциональность рисования не может возникнуть. Рисование происходит только при щелчках, поэтому <Button-1> привязано к методу класса, который отслеживает, где произошел щелчок, и рисует изображение в этом месте:

self.root.bind('<Button-1>', self.addDot)

Однако в области, содержащей инструкции, есть кнопка отмены. Теоретически нажатие на него должно отменить эффект последнего нажатия. Вместо этого, если я нажимаю на него, он регистрирует <ButtonPress> событие, которое имеет значения x и y относительно верхнего левого угла кнопки, а не окна. Я не знаю, как отличить, когда местоположение x, y нажатия кнопки происходит без перехода к окну или кнопке, поэтому self.addDot функция выполняется в левом верхнем углу изображения. Везде, где вы нажимаете, ведет себя как обычно.

Одно предостережение, которое я видел, заключается в том, что если я изменю привязку на холст, а не на корень, это странным образом исчезнет и будет вести себя так, как ожидалось. Почему это так?

Макет:

Макет экрана

Комментарии:

1. Вы пробовали привязывать изображение вместо root ?

2. Все дочерние элементы root будут наследовать привязку, если она привязана root .