DrawingArea中的鼠标事件与PyGtk

时间:2014-05-30 03:59:06

标签: python gtk 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()

当我运行它时,窗口出现,DrawingArea显示白色背景,但是当我点击它时,它不会打印event.xevent.y的值,并且没有错误消息。

任何人都可以告诉我这样做的正确方法是什么?

感谢您的回答。

1 个答案:

答案 0 :(得分:1)

需要使用事件掩码为您要连接的事件设置绘图区域。

self.drawing_area.set_events(gtk.gdk.BUTTON_PRESS_MASK)

请参阅:http://www.pygtk.org/pygtk2tutorial/sec-EventHandling.html (在页面底部也有一个很好的例子)