Вызов s.nodelay(0)
устанавливает режим нодли на 0 (что означает ложь, поэтому - это задержка), и он находится на неправильном объекте окна (s
вместо w
.)
Вы вызываете getch
в экземпляре окна w
, поэтому я считаю, что вам нужно вызвать w.nodelay(1)
(для включить режим нодли).
Вы будететакже необходимо изменить цикл ввода, чтобы он распознал, что если getch()
возвращает -1, это означает, что ни одна клавиша не была нажата.(Это будет обычный результат, поскольку нажатие клавиши занимает значительную долю секунды, но теперь этот цикл будет выполняться много сотен или даже тысяч раз в секунду.)
РЕДАКТИРОВАТЬ:
Я думаю, что я неправильно понял вашу проблему.Приведенный выше код полезен, но не решает основной проблемы.Возможно, вы захотите добавить постоянную задержку в цикл ввода, чтобы больше нажатий клавиш не позволяло выполнять больше действий.
Возможно, что-то вроде этого:
while True:
keypress = w.getch()
if keypress != -1:
# process keypress
sleep(100 milliseconds)