在PyGtk中使用DrawingArea处理鼠标事件
我想在点击一个绘图区域时获取X和Y坐标。我在找一些例子的时候,发现了下面这样的代码:
import gtk
class Ventana(gtk.Window):
def __init__(self):
super(Ventana, self).__init__()
self.set_title('Test')
self.set_size_request(800, 600)
self.set_position(gtk.WIN_POS_CENTER)
self.connect('destroy', gtk.main_quit)
self.drawing_area = gtk.DrawingArea()
self.drawing_area.set_size_request(780, 500)
self.drawing_area.modify_bg(gtk.STATE_NORMAL, gtk.gdk.color_parse('white'))
self.drawing_area.connect('button-press-event', self.on_drawing_area_button_press)
fixed = gtk.Fixed()
fixed.put(self.drawing_area, 10, 10)
self.add(fixed)
self.show_all()
def on_drawing_area_button_press(self, widget, event):
print event.x, ' ', event.y
def main():
Ventana()
gtk.main()
if __name__ == '__main__':
main()
当我运行这段代码时,窗口会出现,绘图区域的背景是白色的。但是当我点击这个区域时,它并没有打印出event.x
和event.y
的值,而且也没有任何错误信息。
有没有人能告诉我正确的做法是什么?
谢谢大家的回答。
1 个回答
3
绘图区域需要设置事件掩码,这样才能连接你想要处理的事件。
self.drawing_area.set_events(gtk.gdk.BUTTON_PRESS_MASK)
可以参考这个链接:http://www.pygtk.org/pygtk2tutorial/sec-EventHandling.html(页面底部还有一个不错的例子)