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.