#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
.