使用Pygame,我目前有这个循环:
def quest_loop():
i = 0
while i < len(quests):
event = pygame.event.wait()
if event.type == KEYDOWN and event.key == K_F4:
screen.fill(BLACK)
message_display(*normal_message, quests[i], wrap_text)
i += 1
pygame.event.clear()
我为游戏创建了一个小的覆盖层,该覆盖层遍历了我在代码中先前生成的数组。
这很好用,但仅当我选择了pygame窗口时。我想让它监听特定的F4按键,即使未选择它。我尝试使用win32api模块,但没有获得很大的成功。当我设法使代码正常工作时,有许多我无法解决的问题。
谢谢您的帮助。
更新:
我再次查看了win32api,并设法纠正了我遇到的一个重复性问题(按一次该键将多次遍历我的列表)。这段代码可以解决此问题:
`def key_press():
global was_pressed
if was_pressed == False and quest_forward() == True:
was_pressed = True
return True
if was_pressed == True and quest_forward() == True:
return False
if was_pressed == True and quest_forward() == False:
was_pressed = False
return False`
我要处理的下一个问题是除非pygame窗口具有焦点,否则无法识别输入。叠加层的当前状态并非完全不可行,只是有些烦人。我已经看过pyHook,但似乎无法在我的代码中插入pythoncom.PumpMessages()
并使其正常工作。
编辑:尝试了多种不同的操作后,似乎在尝试维护pygame窗口时事件处理程序无法运行,我继续尝试使用wxPython和win32api。