Я немного новичок в python и curses, так что было несколько вопросов. Я делаю терминальное приложение, которое использует curses для генерации ui. Я пытаюсь сделать что-то похожее на программу linux top за исключением того, что он извлекает данные из XML-файла. У меня есть этот код, который я изменяю из предыдущего вопроса stackoverflow. Для упрощения вещей динамическое значение, которое я обновляю здесь, - это просто время. Мои два вопроса:python curses динамическое значение + пользовательский ввод
- У меня есть
x = screen.getch(7,2)
, чтобы проверить, хочет ли пользователь выйти. Подобно top, если пользователь может ввести «q» для выхода. Однако из-за этого обновляются значения времени arent. Как я могу получить пользовательский ввод, а также динамическое обновление значений. Когда я комментирую screen.getch, значения начинают обновляться. Ive прочитал, что top использует версию C curses, так что это должно быть возможно, просто нужна помощь в правильном направлении. - Мой второй вопрос касается частоты обновления. Есть ли способ контролировать это с помощью проклятий api? Легкий способ, которым я решил это сделать, это использовать команду
time.sleep()
, но я не был уверен, что это правильный путь. В идеале я хотел бы обновить это новыми xml-данными каждые 60 секунд или около того.
Я видел это Python/curses user input while updating screen в stackoverflow и думаю, что вопрос подобен, но я был немного перегружен кодом. Я до сих пор не понимаю классы и не могу следовать логике. Я искал что-то простое. Я считаю, что парень закончил использование line = sys.stdin.read(1)
, чтобы запустить его код. Мне не повезло при использовании этого вместо getch. Я получил некоторую ошибку о том, что x не может использовать strip().
from os import system
import curses
import time
x = 0
while x != ord('q'):
screen = curses.initscr()
curses.curs_set(False)
screen.clear()
screen.border(0)
screen.addstr(1, 2, "BLAH BLAH ",
curses.A_REVERSE)
ltime = time.asctime(time.localtime(time.time()))
screen.addstr(3, 2,'BLAH1: ' + ltime)
screen.addstr(4, 2, "BLAH2")
screen.refresh()
x = screen.getch(7,2)
curses.endwin()
Вы должны прочитать [Python Docs Curses Tutorial] (https://docs.python.org/2/howto/curses.html) и [window.nodelay] (https://docs.python.org/ 2/library/curses.html # curses.window.nodelay) в частности. – msw
спасибо, что помогло. Я просмотрел учебник раньше, и у него не было много примеров. просто описание функций. – jti107