我对python和curses有点新意,所以有几个问题。我正在制作一个使用curses生成ui的终端应用程序。我试图制作类似于linux程序 top 的东西,除了它从xml文件中获取数据。我有这个代码,我从以前的stackoverflow问题修改。为了简化事物,我在这里更新的动态值就是时间。我的两个问题如下:
x = screen.getch(7,2)
来检查用户是否要退出。与top类似,如果用户可以键入" q"退出。但是由于这个原因,时间值没有更新。如何使用用户输入以及值的动态更新。当我注释掉screen.getch时,值开始更新。我已经读过 top 正在使用C版本的curses,所以这应该是可行的,只需要一个正确方向的帮助。time.sleep()
命令,但我不确定这是否是正确的方法呢?理想情况下,我希望每60秒左右用新的xml数据更新一次。 我确实在stackoverflow中看到了这个Python/curses user input while updating screen,我认为问题类似,但我对代码有点不知所措。我还没有真正理解课程,也无法遵循逻辑。我在寻找简单的东西。我相信那个人最终使用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()
答案 0 :(得分:2)
根据我在screen.nodelay(True)
之后添加screen=curses.initscr()
的一些评论,并且能够让它发挥作用。