используя 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()
Я создал небольшое наложение для игры, которая перебирает массив, который я сгенерировал ранее в коде.
Это работаетотлично, но только когда у меня выбрано окно пигмеев.Я хотел бы, чтобы он слушал определенное нажатие клавиши 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`
Следующая проблема, с которой я пытаюсь разобраться, заключается в том, что ввод не распознается, если окно пигмея не имеет фокуса.Текущее состояние наложения не является совершенно неосуществимым, просто немного раздражает.Я посмотрел на pyHook, но я не могу вставить pythoncom.PumpMessages()
в мой код и заставить его работать.
РЕДАКТИРОВАТЬ: После попытки нескольких разных вещей, кажется, мой обработчик событий не может работать, пока я пытаюсь сохранить окно Pygame, я перешел к попытке с помощью wxPython и win32api.