от
У меня есть меню в Python. Эта часть была легкой. Я использую
raw_input()
для получения выбора от пользователя. Проблема в том, что
raw_input
(и вход) требует от пользователя нажмите клавишу Enter после того как они сделают выбор. Есть ли способ, чтобы заставить действовать сразу же после нажатия клавиши? Вот что я получил до сих пор:
import sys
print """Menu
1) Say Foo
2) Say Bar"""
answer = raw_input("Make a selection

Ваш ответ

Отображаемое имя (по желанию):
Конфиденциальность: Ваш электронный адрес будет использоваться только для отправки уведомлений.

5 Ответы

0 голосов
от
У меня есть меню в Python. Эта часть была легкой. Я использую
raw_input()
для получения выбора от пользователя. Проблема в том, что
raw_input
(и вход) требует от пользователя нажмите клавишу Enter после того как они сделают выбор. Есть ли способ, чтобы заставить действовать сразу же после нажатия клавиши? Вот что я получил до сих пор:
import sys
print """Menu
1) Say Foo
2) Say Bar"""
answer = raw_input("Make a selection
0 голосов
от
На Windows:
import msvcrt
answer=msvcrt.getch()
0 голосов
от
На Linux: набор режиме RAW выберите и прочитайте клавиш восстановить нормальные параметры импорт Сыс импорт выберите импорт termios импорт телетайп деф getkey(): old_settings = termios.функция tcgetattr(Сыс.устройства stdin) телетайп.setraw(Сыс.устройства stdin.fileno()) выберите.выберите([sys файла.устройства stdin], [], [], 0) ответ = Сыс.устройства stdin.читать(1) termios.tcsetattr(Сыс.устройства stdin, termios.TCSADRAIN, old_settings) возвращение ответа печать меню """ 1) Сказать Фу 2) Сказать"Бар"" ответ=getkey() если "1" в ответ: печать "фу" Элиф "2" в ответ: печать-бар""
0 голосов
от
Вау, это заняло вечность. ОК, Вот что я в конечном итоге с
#!C:\python25\python.exe
import msvcrt
print """Menu
1) Say Foo 
2) Say Bar"""
while 1:
    char = msvcrt.getch()
    if char == chr(27): #escape
        break
    if char == "1":
        print "foo"
        break
    if char == "2":
        print "Bar"
        break
Это не сложно, используя ожидания, питон...вещь...которая поставляется с Python. Но как только я попробовал его в DOS (РП, CMD.exe), а реальную программу, то он побежал штрафа. Никто не попробовать это в холостую, если у вас есть менеджер задач под рукой. Я уже забыл, как я жил с меню, которые не Арн супер-мгновенно реагирует.
0 голосов
от
Причина библиотекой msvcrt не в холостую-потому что ожидания не имеет доступа к библиотеки, которая работает библиотеки msvcrt. Если при запуске программы изначально в cmd.exe это хорошо работает. По той же причине, что ваша программа взрывает на Mac и терминалов в Linux. Но я думаю, что если вы собираетесь использовать этот специально для Windows, больше силы тебе.
Добро пожаловать на сайт ByNets, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...