Читайте ввод с консоли, используя pygame - PullRequest
4 голосов
/ 22 марта 2012

Есть ли в любом случае использовать pygame для получения ввода с консоли, вместо того, чтобы отображать отдельное окно для получения ввода?Я использую pygame, чтобы отслеживать, как долго нажимаются клавиши на клавиатуре.

Следующий код не работает (это лишь минимальный пример, он фактически не отслеживает прошедшее время):

pygame.init()

while 1:
    for event in pygame.event.get():
        if event.type == pygame.KEYDOWN:
            print event.key, 'pressed'

Не похоже, что происходит какое-либо событие пигмея.Если я добавлю

screen = pygame.display.set_mode((640, 480))

После

pygame.init()

, тогда событие произойдет, но у меня есть это ужасное окно, с которым я не хочу иметь дело.

Дляобъясните, почему я не хочу окно, я представляю это приложение как утилиту командной строки, поэтому у меня не может быть этого.Есть ли какая-либо функциональная причина, препятствующая запуску pygame в командной строке?

Спасибо!

EDIT: Я предположил, что проблема была в pygame.init (), ичто мне нужно было только инициализировать ключ и модули событий.Согласно http://www.pygame.org/docs/tut/ImportInit.html я должен был позвонить

pygame.key.init()<br/>pygame.event.init()
, но это не сработало.

Ответы [ 5 ]

2 голосов
/ 22 марта 2012

Pygame предназначена для создания (графических) игр, поэтому она фиксирует нажатия клавиш только при отображении окна. Как сказал в своем ответе Игнасио, чтение из командной строки и из другого окна - это очень разные вещи.

Если вы хотите создать приложение командной строки, попробуйте curses:

http://docs.python.org/library/curses.html

К сожалению, он работает только в Linux и Mac OS X.

1 голос
/ 13 августа 2014

Если вы просто сделаете окно действительно маленьким, используя

screen = pygame.display.set_mode ((1, 1))

, вы не сможете его увидеть.Таким образом, вы нажали в окно, но вы не заметили.

Если вы щелкнете где-нибудь, конечно, он перестает работать.Вы должны нажать на значок окна Pygame, чтобы он снова заработал.

0 голосов
/ 27 мая 2013

Попробуйте pygame.display.iconify().Это скроет экран Pygame, и вы все равно сможете обнаружить нажатия клавиш.

0 голосов
/ 25 марта 2012

Если вы просто не хотите никакого окна вообще, вы можете использовать PyHook. Если вам просто нужно консольное приложение, получите пользовательский ввод с помощью встроенной в Python команды «raw_input (...)».

0 голосов
/ 22 марта 2012

Консольный ввод осуществляется через стандартный ввод, который Pygame не готов обработать. Не существует надежного способа получения событий нажатия / выпуска через stdin, поскольку это зависит от терминала, отправляющего нажатия клавиш.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...