Уведомления

Группа в Telegram: @pythonsu

#1 Фев. 25, 2010 07:26:52

sumrak_ss
От:
Зарегистрирован: 2009-11-21
Сообщения: 46
Репутация: +  0  -
Профиль   Отправить e-mail  

Консольное приложение

Как перехватывать нажатия клавиш в консольном приложении, используя стандартные модули, без tk и прочих граф. библиотек? Если можно конкретный пример.



Офлайн

#2 Фев. 25, 2010 09:31:16

apologize828
От:
Зарегистрирован: 2010-02-13
Сообщения: 223
Репутация: +  1  -
Профиль   Отправить e-mail  

Консольное приложение

конкретнее опиши свою задачу



Офлайн

#3 Фев. 25, 2010 10:18:36

sumrak_ss
От:
Зарегистрирован: 2009-11-21
Сообщения: 46
Репутация: +  0  -
Профиль   Отправить e-mail  

Консольное приложение

apologize828
конкретнее опиши свою задачу
Конкретнее - как заставить выводить текст или выполнять функцию в зависимости от нажатой клавиши?
Если совсем по-простому: к примеру, нажимаю клавишу “А” - выводится определенный текст, нажимаю “F” - выполняется какая либо функция.



Офлайн

#4 Фев. 25, 2010 10:58:03

.Serj.
От:
Зарегистрирован: 2008-09-27
Сообщения: 181
Репутация: +  0  -
Профиль   Отправить e-mail  

Консольное приложение

Полагаю, никак, ибо cli это command line interface.

Как вариант, можно копать в сторону ncurses.



Офлайн

#5 Фев. 25, 2010 12:20:59

apologize828
От:
Зарегистрирован: 2010-02-13
Сообщения: 223
Репутация: +  1  -
Профиль   Отправить e-mail  

Консольное приложение

простая тупость)))
def hello():
print(“Hello”)
while True:
vvod=input(“Vvedite:”)
if vvod==“a”:
print(vvod)
continue
elif vvod==“f”:
hello()
continue
elif vvod==“e”:
break
else:
continue

посмотри такое:
при вводе символа если он не число то символ добавляется в список.если число то выход и вывод списка символов
a=
b=

while True:

text=input(“vvedite chislo:”)
text=str(text)
if len(text)==0:
print(“Vy nichego ne vveli!!!”)
continue
elif len(text)>1:
print(“Vy vveli boliche odnogo simvola!!!”)
continue
elif len(text)==1 and text not in a:
b.append(text)
continue
elif len(text)==1 and text in a:
print(b)
break

или можно применять конструкцию try-except чтобы отслеживать ошибки:

while True:
try:
vvod=input(“vvod:”)
vvod=int(vvod)
if vvod==1:
print(“vy vveli 1!!!”)
continue
elif vvod==2:
print(“Vy vveli 2!!!”)
continue
else:
break
except ValueError:
print(“Vy vveli ne chislo!!!”)

Короче идею надеюсь понял.если это вообще то что тебе нужно)))



Отредактировано (Фев. 25, 2010 12:21:57)

Офлайн

#8 Фев. 25, 2010 17:20:16

sumrak_ss
От:
Зарегистрирован: 2009-11-21
Сообщения: 46
Репутация: +  0  -
Профиль   Отправить e-mail  

Консольное приложение

apologize828 тебе тоже спасибо за подробный ответ, но немного не то:)



Офлайн

#9 Фев. 27, 2010 01:27:08

sumrak_ss
От:
Зарегистрирован: 2009-11-21
Сообщения: 46
Репутация: +  0  -
Профиль   Отправить e-mail  

Консольное приложение

А вот подсказали еще проще:

from msvcrt import getch
while 1:
c = getch()
print "You press:", c



Офлайн

#10 Фев. 27, 2010 17:52:23

Javad
От:
Зарегистрирован: 2009-12-31
Сообщения: 9
Репутация: +  0  -
Профиль   Отправить e-mail  

Консольное приложение

А реально сделать в консоли что-то вроде прогрессбара?К примеру,нужно в процентах выводить обработку файла,но если это делать простым print'ом,то некрасиво как-то выходит: слишком много лишних строк выводит



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version