2016-11-17 2 views
0

Я разрабатываю небольшой скрипт python, который использует проклятия для чтения stdin терминала. По мере того как пользователи удерживают ключ, movement_smallstep должен увеличиваться для более быстрого общего движения после x 'repeatats'. Эта функция вызывается каждым нажатием клавиши. По мере того, как изменение пользовательского интерфейса движения и функции не синхронизируются, пользователь обычно «перевыполняет» цель, и поэтому я хочу сбросить некоторые из stdin curses.Python Curses Flush newest x stdin

def movement_manager(step,repeats,key): 
    global old_key #remembering the n-1 pressed key of stdin 
    global input_repeats #remembering how often the key was pressed 
    global movement_smallstep #movement for ui change 
    if key != old_key: 
     input_key = key 
     input_repeats = 0 
     movement_smallstep = 1 
    if (input_repeats > repeats): 
     movement_smallstep+=1 
     #Flush the newest x stdin inputs of the queue here 
    input_repeats+=1 
    return movement_smallstep 

Так, например, пользователь нажимает клавишу «A» 23 раза.

Movement(repeats 0-10)=1 Stdin= Unflushed 
Movement(repeats 10-20)=2 Stdin= flush oldest userinput 
Movement(repeats 10-20)=3 Stdin= flush oldest 2 userinputs 
... 

ответ

0

Вы можете использовать функцию flushinp для отмены ввода или typeahead отбрасывать выход (при том, что падает сзади). Для последнего дескриптор файла будет 1 (для стандартного вывода).

Смежные вопросы