С помощью stovfl решение было достигнуто. Приложение состояло из области рисования, рамки, поля событий и метки для отображения координат указателя мыши. Область рисования была добавлена в поле, поле было добавлено в рамку, которая была добавлена в сетку.
from gi.repository import Gtk
from gi.repository import Gdk
# (...)
box = Gtk.EventBox()
box.add_events(Gdk.EventMask.POINTER_MOTION_MASK) # 1
box.connect("button-press-event", self.on_click)
box.connect("motion-notify-event", self.on_mouse_move) # 2
self.canvas = Gtk.DrawingArea()
self.canvas.connect("draw", self.on_draw)
self.canvas.set_size_request(800, 600)
box.add(self.canvas)
grid = Gtk.Grid()
frame = Gtk.Frame()
frame.set_label("KHAD")
frame.add(box)
grid.attach(frame, 0, 1, 1, 1)
self.add(grid)
# (...)
self.locationLabel = Gtk.Label("X,Y")
self.locationLabel.set_alignment(0, 0)
grid.attach(self.locationLabel, 0, 2, 1, 1)
Решение было:
- Добавить
POINTER_MOTION_MASK
к окну события: box.add_events(Gdk.EventMask.POINTER_MOTION_MASK)
. - Соедините
motion-notify-event
коробки с методом, который считывал и обновлял метку (левый нижний угол; она была выровнена по self.locationLabel.set_alignment(0, 0)
).