Обратные вызовы с проклятиями Python

У меня есть код, который выглядит так:

stdscr.nodelay(1) while True: c = stdscr.getch() if c != -1: stdscr.addstr("%s was pressed\n" % c) if time() - last > 1: stdscr.addstr("time() == %s\n" % str(time())) last = time() 

Тем не менее, я беспокоюсь, что мой код действительно расточительный / неэффективный. Существует ли механизм обратного вызова для проклятий? Если нет, каков был бы канонический способ справиться с такой ситуацией?

2 Solutions collect form web for “Обратные вызовы с проклятиями Python”

Вместо этого вы могли бы попробовать Урвида .

Urwid предоставляет инструментарий более высокого уровня поверх проклятий и включает цикл событий для обработки ввода клавиатуры и мыши. Он либо использует свой собственный цикл событий на основе выбора, либо может подключаться к gevent или Twisted.

В дополнение к эффективному использованию ввода с клавиатуры, у вас также будет множество возможностей для обработки ввода пользователем с полями редактирования, элементами управления списками и т. Д.

Как насчет использования режима половинной задержки для блокировки getch ()?

 import time import curses stdscr = curses.initscr() curses.halfdelay(10) # 10/10 = 1[s] inteval try: while True: c = stdscr.getch() if c != -1: stdscr.addstr("%s was pressed\n" % c) stdscr.addstr("time() == %s\n" % time.time()) finally: curses.endwin() 
  • Полоса прокрутки не растягивается, чтобы соответствовать виджету «Текст»
  • Python - лучший язык программирования в мире.