Как зайти в Даркнет?!
25th January, 01:11
8
0
Как в tkinter из поля ввода Entry получить значение в одну переменную и обновить строку кнопкой, затем получить ещё одно введённое значение и затем сложить их. Ниже пример кода
21st July, 19:00
899
0
Программа, которая создает фейковые сервера в поиске игровых серверов CS 1.6 Steam
21st March, 17:43
952
0
Очень долго работает Update запрос Oracle
27th January, 09:58
916
0
не могу запустить сервер на tomcat HTTP Status 404 – Not Found
21st January, 18:02
907
0
Где можно найти фрилансера для выполнения поступающих задач, на постоянной основе?
2nd December, 09:48
942
0
Разработка мобильной кроссплатформенной военной игры
16th July, 17:57
1727
0
период по дням
25th October, 10:44
3957
0
Пишу скрипты для BAS только на запросах
16th September, 02:42
3722
0
Некорректный скрипт для закрытия блока
14th April, 18:33
4614
0
прокидывать exception в блоках try-catch JAVA
11th March, 21:11
4382
0
Помогите пожалуйста решить задачи
24th November, 23:53
6087
0
Не понимаю почему не открывается детальное описание продукта
11th November, 11:51
4352
0
Нужно решить задачу по программированию на массивы
27th October, 18:01
4400
0
Метода Крамера С++
23rd October, 11:55
4309
0
помогите решить задачу на C++
22nd October, 17:31
4002
0
Помогите решить задачу на python с codeforces
22nd October, 11:11
4492
0
Python с нуля: полное руководство для начинающих
18th June, 13:58
2599
0
Как сделать меню, которое не требует от пользователя нажатия клавиши [enter]для выбора?
У меня есть меню в Python. Эта часть была легкой. Я использую raw_input() , чтобы получить выбор от пользователя.
Проблема заключается в том, что raw_input (и input) требуют, чтобы пользователь нажал Enter после того, как они сделают выбор. Есть ли способ заставить программу действовать сразу же после нажатия клавиши? Вот что у меня есть на данный момент:
import sys
print """Menu
1) Say Foo
2) Say Bar"""
answer = raw_input("Make a selection> ")
if "1" in answer: print "foo"
elif "2" in answer: print "bar"
Было бы здорово иметь что-то вроде
print menu
while lastKey = "":
lastKey = check_for_recent_keystrokes()
if "1" in lastKey: #do stuff...
На Linux:
- установить режим raw
- выберите и прочитайте нажатие клавиши
- восстановить нормальные настройки
import sys
import select
import termios
import tty
def getkey():
old_settings = termios.tcgetattr(sys.stdin)
tty.setraw(sys.stdin.fileno())
select.select([sys.stdin], [], [], 0)
answer = sys.stdin.read(1)
termios.tcsetattr(sys.stdin, termios.TCSADRAIN, old_settings)
return answer
print """Menu
1) Say Foo
2) Say Bar"""
answer=getkey()
if "1" in answer: print "foo"
elif "2" in answer: print "bar"
Ничего себе, это заняло целую вечность. Хорошо, вот что я получил в итоге
#!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
Он терпит неудачу трудно используя IDLE, python...thing...that приходит с python. Но как только я попробовал его в DOS (э-э, CMD.exe), как настоящую программу, то он работал нормально.
Никто не пробует его в IDLE, если у вас нет диспетчера задач под рукой.
Я уже забыл, как жил с меню, которые не были супер-мгновенными отзывчивыми.
Причина сбоя msvcrt в IDLE заключается в том, что IDLE не обращается к библиотеке, в которой выполняется msvcrt. В то же время, когда вы запускаете программу изначально в cmd.exe, она прекрасно работает. По той же причине, по которой ваша программа взрывается на терминалах Mac и Linux.
Но я думаю, что если вы собираетесь использовать это специально для windows, больше энергии для вас.