【发布时间】:2015-01-20 02:21:07
【问题描述】:
我在 GTK 小部件中嵌入了一个 pygame 显示,以实现游戏原型的调试控制。
看来我不得不使用 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 -> VBox
我在窗口的其他地方有几个按钮可以正常接收点击。
有什么想法吗?
【问题讨论】:
标签: python-2.7 pygame pygtk