2016-04-26 2 views
1

Я хочу иметь возможность управлять некоторыми двигателями, которые подключены к моей малине pi через нажатия клавиш. У меня есть код, который превращает двигатели в одно направление в течение 5 секунд, а затем в другое направление в течение 5 секунд, прежде чем выключать их. Я хочу использовать функцию прослушивания клавиш pygame для управления двигателями с помощью нажатия клавиш. Я использую следующее в качестве теста на аспект клавиатуры.Pygame Key Listener для Python 3

import pygame 

pygame.init() 

pygame.key.set_repeat(100, 100) 

while 1: 
for event in pygame.event.get(): 
    if event.type == pygame.KEYDOWN: 
     if event.key == pygame.K_w: 
      print 'go forward' 
     if event.key == pygame.K_s: 
      print 'go backward' 
    if event.type == pygame.KEYUP: 
     print 'stop' 

Когда я запускаю этот скрипт, я не получаю никаких ошибок, поэтому я знаю, что он работает. Однако, когда я нажимаю клавишу «w» или «s», то, что отображается, является либо «w», либо «s», как если бы я просто печатал. Все, что я хочу, - это выполнить функцию, нажав клавишу. Если есть другой/лучший способ сделать это, все будет хорошо.

+1

Все фиксированные. Не понял, что вам нужно было сказать pygame, чтобы сделать окно, даже если окно не используется. – Jared

ответ

0

Pygame KEYDOWN события ищут нажатия клавиш в окне активное окно.

Вы должны создать окно, чтобы сообщить Pygame, где читать события.

Другим решением было бы перехватывать события клавиатуры с терминала, поэтому вам не нужно было бы инициализировать или фокусировать окно, используя что-то вроде этого: Python Key Binding или используя библиотеку pyHook для создания глобальных клавиатурных крючков.

P.S - Я понимаю, что вы решили проблему самостоятельно, я включаю это для полноты.

Смежные вопросы