Форум сайта python.su
Как перехватывать нажатия клавиш в консольном приложении, используя стандартные модули, без tk и прочих граф. библиотек? Если можно конкретный пример.
Офлайн
конкретнее опиши свою задачу
Офлайн
apologize828Конкретнее - как заставить выводить текст или выполнять функцию в зависимости от нажатой клавиши?
конкретнее опиши свою задачу
Офлайн
Полагаю, никак, ибо cli это command line interface.
Как вариант, можно копать в сторону ncurses.
Офлайн
простая тупость)))
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)
Офлайн
Офлайн
ViperОно!! Спасибо! Вот еще нашел http://www.python.org/doc/faq/library/#how-do-i-get-a-single-keypress-at-a-time
http://books.google.com.ua/books?id=1Shx_VXS6ioC&pg=PA98&lpg=PA98&dq=unbuffered+keyboard+input+python&source=bl&ots=BB732JZ9Q0&sig=1i1yrw2KpwEf2M2RBghKJdAwcWY&hl=ru&ei=XF6GS6rfGKWImwOc2IDaCw&sa=X&oi=book_result&ct=result&resnum=8&ved=0CCkQ6AEwBw#v=onepage&q=unbuffered%20keyboard%20input%20python&f=false
Офлайн
apologize828 тебе тоже спасибо за подробный ответ, но немного не то:)
Офлайн
А вот подсказали еще проще:
from msvcrt import getch
while 1:
c = getch()
print "You press:", c
Офлайн
А реально сделать в консоли что-то вроде прогрессбара?К примеру,нужно в процентах выводить обработку файла,но если это делать простым print'ом,то некрасиво как-то выходит: слишком много лишних строк выводит
Офлайн