MCVE
import Tkinter as tk
root = tk.Tk()
canvas = tk.Canvas(root, width=100, height=100)
canvas.grid(row=0, column=0)
def print_click(event):
print event.x, event.y
canvas.bind('<Button-1>', print_click)
root.mainloop()
Issue
Нажатие на холст на верхнем левом отпечатке (0, 0)
.
Нажатие нахолст в самом низу справа печатает (100, 100)
. Я ожидал (99, 99)
.
Это означает, что холст на самом деле имеет ширину 101 пиксель и высоту, а не 100.
В моей реальной программе я показываю массив (как изображение) нахолст и нужно точное положение щелчка. Если эта позиция не существует в базовом изображении (например, (100, 100)
для массива 100x100), программа завершится сбоем.
Вопросы
- Am Iделаете что-то не так, создавая холст? Почему он на один шире и выше, чем ожидалось?
- Это простое исправление - просто вычесть 1 из
width
и height
при настройке холста, который должен иметь ширину width
и высоту height
?