@skymike

Python Выход из программы на curses без задержки?

Суть такова, в програме на curses работает цикл который читает раз в секунду с файлов данные и выводит на экран, в цикле организован выход по кнопке q которая прерывает цикл и выходит из цикла и программы. Но есть задержка выхода при нажатии на кнопку, что очевидно. Как можно оформить выход из такой программы без задержки? Пробовал код выхода оформить в отдельную функцию и запустить цикл с выводом данных и выходом паралельно тредами, но чтот так и не получилось убрать задержку. Что посоветуете в этом случае? Вот примерный код программы:
import time
import curses

myscreen = curses.initscr()
### прячем курсор
curses.curs_set(0)

### используем дефолтные цвета кoнсоли (прозрачность и тп)
curses.start_color()
curses.use_default_colors()
curses.init_pair(1,-1,-1)
### задаем цвет для строки с мАч
curses.init_pair(2,curses.COLOR_GREEN,-1)
curses.init_pair(3,curses.COLOR_RED,-1)

myscreen.border(0)

myscreen.addstr(0,1,'| program |')

height, width = myscreen.getmaxyx()

......

while True:
    ### тут читаем файлы и выводим на экран данные
    with open(path+'status') as f:
        status = f.read()
    myscreen.addstr(...)

    ......

    ###тут выход
    curses.noecho() ### для голой консоли, не выводит в конце строки нажимаемые символы
    myscreen.addstr(start_y + 11, start_x_exit - 4, exit)
    myscreen.nodelay(True) ###  убирает задержку getch чтобы он не ожидал введения символа.
    if myscreen.getch() == 113: ### 113 это ord('q')
        break

    myscreen.refresh()
    time.sleep(1)
   

myscreen.clear()
myscreen.refresh()
curses.endwin()
  • Вопрос задан
  • 123 просмотра
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы