PyCharm: msvcrt.kbhit() и msvcrt.getch() не работают?

Я пытался прочитать один символ из консоли в PyCharm (без нажатия Enter), но безрезультатно. Функции msvcrt.getch() останавливает код, но не реагирует на нажатия клавиш (даже ввод) и msvcrt.kbhit() всегда возвращает 0. Например, этот код ничего не печатает:

import msvcrt
while 1:
    if msvcrt.kbhit():
        print 'reading'
print 'done'

Я использую Windows 7, PyCharm 3.4 (то же самое происходит в режиме ожидания).

Что случилось? Есть ли другой способ просто читать ввод без ввода?

1 ответ

Это возможно в специальном режиме Run окно.

  • Проверить Emulate terminal in output console установка флажка в Run/Debug Configurations

Вы пытаетесь сравнить <Class 'Bytes'> к <Class 'string'>.

Бросить key к string а затем сравните:

import msvcrt

while True:
    if msvcrt.kbhit():
        key = str(msvcrt.getch())
        if key == "b'w'":
            print(key)

Чтобы запустить программу в командной строке, перейдите по ссылке: отредактируйте Конфигурации> Выполнение> включите "Эмулировать терминал в консоли вывода".

Этот код исправит. Так что используйтеkey.lower()

while True:
    key = msvcrt.getch()
    if key == "b'w'":
        print("Pressed: W without lower()")
        #It won't work.
    if key.lower() == "b'w'":
        print("Pressed: W with lower()")
        #This one will work.
#I don't know why but key.lower() works.
Другие вопросы по тегам