gpt4 book ai didi

python curses.newwin 不工作

转载 作者:可可西里 更新时间:2023-11-01 13:33:09 30 4
gpt4 key购买 nike

我是第一次学习 curses,我决定用 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() 初始化的正常 win 窗口可以工作,但字段窗口不显示。有帮助吗?

编辑:这是经过修改的新代码,但仍然无法正常工作。

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)

最佳答案

对我来说似乎没问题——我总是使用 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)

我看到相反的“Hello, world!”,然后当我按下任意键以满足 getch 时,程序终止并出现预期的消息 got 错误(curs_set() 返回 ERR)

您在这个程序中看到了什么...? (记住包装器执行 initscr 并设置 noechocbreak —— 更重要的是在完成后重置它,这就是我总是使用它的原因; -).

顺便说一句,我在 Mac (OSx 10.5.8) 和 Terminal.App 上使用 Py 2.6.4。您的平台...?

关于python curses.newwin 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3170406/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com