Python Curses.Newwin不起作用
题
我是第一次学习诅咒,我决定在Python中进行此操作,因为这比不断重新编译要容易。但是,我打了一个障碍。当我尝试更新秘密窗口时,我没有输出。这是代码段:
import curses
win = curses.initscr()
curses.noecho()
curses.cbreak()
curses.curs_set(0)
field = curses.newwin(1, 20, 1, 1)
field.addstr(0, 0, "Hello, world!", curses.A_REVERSE)
field.refresh()
使用Initscr()起初的正常赢窗口,但字段窗口未显示。有帮助吗?
编辑:这是新的修订代码,仍然不起作用。
import curses
ex = None
def main(stdscr):
global ex
try:
curses.curs_set(0)
except Exception, e:
ex = e
field = curses.newwin(25, 25, 6, 6)
field.border()
cont = True
x, y = 0, 0
while cont:
stdscr.clear()
field.clear()
coords = "%d, %d" % (x, y)
stdscr.addstr(5, 5, coords, curses.A_REVERSE)
field.addstr(y+2, x+2, "@", curses.A_BOLD)
chr = stdscr.getkey()
if chr == 'h':
if x > 0: x -= 1
if chr == 'l':
if x < 20: x += 1
if chr == 'j':
if y > 0: y -= 1
if chr == 'k':
if y < 20: y += 1
if chr == 'q':
cont = False
stdscr.clear()
field.clear()
stdscr.noutrefresh()
field.noutrefresh()
curses.doupdate()
curses.wrapper(main)
if ex is not None:
print 'got %s (%s)' % (type(ex).__name__, ex)
解决方案 2
啊,发现了问题。当我使用stdscr.clear()时,它正在清除整个终端,包括新窗口。我要做的就是制作两个窗口,一个用于每个单独的显示器。
哦,感谢上面的诅咒。在这里说,因为我无法发表评论。
其他提示
对我来说似乎还可以 - 我总是用 curses.wrapper
而且我的终端不支持光标可见性0,所以这就是我所拥有的...:
import curses
ex = None
def main(stdscr):
global ex
try:
curses.curs_set(0)
except Exception, e:
ex = e
field = curses.newwin(1, 20, 1, 1)
field.addstr(0, 0, "Hello, world!", curses.A_REVERSE)
field.refresh()
field.getch()
curses.wrapper(main)
if ex is not None:
print 'got %s (%s)' % (type(ex).__name__, ex)
我看到了反转的“你好,世界!”,然后当我击中任何钥匙以满足 getch
该程序以预期的消息终止 got error (curs_set() returned ERR)
.
您在这个程序中看到什么...? (请记住包装器确实 initscr
并设置 noecho
和 cbreak
- 更重要的是在完成后将其重置,这就是为什么我总是使用它;-)。
顺便说一句,我在Mac(OSX 10.5.8)和Terminal.App上使用PY 2.6.4。您的平台...?
不隶属于 StackOverflow