在嵌入GTK +小部件的pygame显示中收到的键但不是鼠标事件

时间:2015-01-20 02:21:07

标签: python-2.7 pygame pygtk

我将一个pygame显示嵌入到GTK小部件中,以实现游戏原型的调试控件。

我似乎被迫使用PyGTK来处理游戏的输入。我的回调接收gtk按键事件,但按钮按下事件永远不会成功。

class Dashboard():
[...]
self.drawingarea_game = gtk.DrawingArea()
self.drawingarea_game.set_flags(gtk.CAN_DEFAULT | gtk.CAN_FOCUS | gtk.SENSITIVE | gtk.PARENT_SENSITIVE)
gobject.timeout_add(60, game.test_loop)
self.win.show_all()
self.drawingarea_game.grab_focus()
self.drawingarea_game.connect("button-press-event", game.mousepress)
self.drawingarea_game.connect("key-press-event", game.keypress)
gtk.main()


class Game():
[...]
def keypress(self, widget, event):
    Error.log(event.keyval)
    if event.keyval == 100: #d
        self.SCREEN_POSITION_X = -30
    if event.keyval == 97:  #a
        self.SCREEN_POSITION_X = 0
    if event.keyval == 115: #s
        self.SCREEN_POSITION_Y = -30
    if event.keyval == 119: #w
        self.SCREEN_POSITION_Y = 0
    return True

def mousepress(self, widget, event):
    Error.log(event.button)

我也试过检查一个pygame事件,以防它以某种方式被劫持,但是它也没有报告任何事情:

class Game():
[...]
def test_loop(self):
for event in pygame.event.get():
    if event.type == pygame.MOUSEBUTTONDOWN:
        print(event)

绘图区域是嵌套的:Window - > HBox - >垂直框

我在窗口的其他地方有几个按钮可以获得良好的点击次数。

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

鼠标事件必须为绘图区域声明 显式 ,显然与击键事件形成对比。添加后它可以工作:

self.drawingarea_game.set_events(gtk.gdk.BUTTON_PRESS_MASK)
相关问题