Python Gtk:如何检测EventBox上的鼠标位置?
我一直在尝试用Python编写简单的CAD应用程序。我在修补pyglet,得到了一些结果:,但我决定切换回Gtk,我撞到了墙: 我无法获取EventBox上的鼠标指针位置(对于pyglet,它是图片中窗口应用程序左下角的标签)。为它设计了什么信号?或者我应该使用另一种方法 我将非常感谢您提供的任何信息或资源。提前谢谢 问题:如何检测EventBox上的鼠标位置Python Gtk:如何检测EventBox上的鼠标位置?,python,gtk,Python,Gtk,我一直在尝试用Python编写简单的CAD应用程序。我在修补pyglet,得到了一些结果:,但我决定切换回Gtk,我撞到了墙: 我无法获取EventBox上的鼠标指针位置(对于pyglet,它是图片中窗口应用程序左下角的标签)。为它设计了什么信号?或者我应该使用另一种方法 我将非常感谢您提供的任何信息或资源。提前谢谢 问题:如何检测EventBox上的鼠标位置 Gtk.EventBox小部件是Gtk.Bin的一个子类,它也有自己的窗口。它非常有用,因为它允许您捕获没有自己窗口的小部件的事件
-
小部件是Gtk.EventBox
的一个子类,它也有自己的窗口。它非常有用,因为它允许您捕获没有自己窗口的小部件的事件Gtk.Bin
-
将位字段
中的events
添加到events
的事件掩码中self
-
一组位标志,用于指示窗口将接收哪些事件
- 指针(通常是鼠标)已移动
Gtk.EventBox
应该有标志,而不是窗口
box = Gtk.EventBox()
box.connect("motion-notify-event", self.on_mouse_move)
box.add_events(Gdk.EventMask.POINTER_MOTION_MASK)
在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)
解决办法是:
指针\u运动\u掩码
添加到事件框:框。添加事件(Gdk.EventMask.POINTER\u运动\u掩码)
self.locationLabel.set\u alignment(0,0)
)的方法连接框的motion notify event
)编辑的可能重复:我正在python中寻找解决方案在我找到的“可能重复”中,我设置了连接:
box.connect(“motion notify event”,self.on\u move)
,但它只在单击区域时起作用。剩下的问题:如何用python在方框上设置GDK\u指针\u运动\u掩码
?让我们来看看。