Я запускаю модель ML, которая предсказывает жесты пальцев. Я пытаюсь смоделировать событие нажатия клавиши в python, используя библиотеку pynput, и я проверяю, что она работает нормально. Но у меня есть другая программа, которая представляет собой игру, написанную на python с использованием библиотеки pygame, которая открывается в новом окне, но проблема в том, что управление нажатием клавиш не работает, но работает, когда я вручную нажимаю кнопки клавиатуры.
Как имитировать событие нажатия клавиши в python в другой программе, работающей в python
Ответы (2)
В pygame вы можете добавлять события в очередь событий, выполнив следующие действия:
newevent = pygame.event.Event(type, **attributes) #create the event
pygame.event.post(newevent) #add the event to the queue
Где type
— тип события (числовая константа), а **attributes
— список атрибутов keyarg, а также предопределенные константы.
Все эти константы определены в модуле pygame.locals
. документы событий pygame и ключевые документы pygame перечисляют их все.
Итак, если вы хотите имитировать нажатие клавиши «a», например, код будет таким:
newevent = pygame.event.Event(pygame.locals.KEYDOWN, unicode="a", key=pygame.locals.K_a, mod=pygame.locals.KMOD_NONE) #create the event
pygame.event.post(newevent) #add the event to the queue
KEYDOWN – это константа, соответствующая событию нажатия клавиши.unicode
– это Unicode-представление нажатой клавиши.key
– это константа, связанная с нажатой клавишей.mod
– это константа, представляющая модификатор (если кнопка нажата, например, одновременно с нажатием SHIFT или CAPS_LOCK).
Надеюсь, поможет.
Я решил проблему, эмулируя событие нажатия клавиши с помощью keyboard.press и прослушивая одно и то же событие с помощью keyboard.Listner(), оба присутствуют в клавиатурной библиотеке. Поэтому я не использовал функции pygame для прослушивания события. Спасибо всем за вашу помощь.