_curses.error: addwstr() returned ERR on changing nlines to 1 on newwin method
_curses.error: addwstr() returned ERR on changing nlines to 1 on newwin method
密码是:
from curses import *
from curses.panel import *
def main(stdscr):
start_color()
curs_set(0)
init_pair(1, COLOR_BLACK, COLOR_CYAN)
posy = posx = 0
window = newwin(1, 1, posy, posx)
panel = new_panel(window)
window.addstr('*', color_pair(1))
update_panels()
doupdate()
while True:
key = stdscr.getch()
if key == ord('j'):
posy+=1
elif key == ord('k'):
posy-=1
elif key == ord('h'):
posx-=1
elif key == ord('l'):
posx+=1
elif key == ord('q'):
endwin()
break
panel.move(posy,posx)
update_panels()
doupdate()
if __name__ == '__main__':
wrapper(main)
我收到这个错误:
Traceback (most recent call last):
File "test_1_height_error.py", line 34, in <module>
wrapper(main)
File "/usr/lib/python3.7/curses/__init__.py", line 94, in wrapper
return func(stdscr, *args, **kwds)
File "test_1_height_error.py", line 12, in main
window.addstr('*', color_pair(1))
_curses.error: addwstr() returned ERR
但是,如果我将第 10 行从 window = newwin(1, 1, posy, posx) 更改为 window = newwin(2, 1, posy, posx) 即更改 nlines args大于 1 那么它工作正常。
我真的不明白为什么我会遇到这个问题。
addch
以及由它构建的任何内容(例如 addstr
)打印文本和 使光标前进 超过打印的内容。
A 1x1 window 不够大,无法写一个字符并换行到下一行(因为你填充行)。当 window 是 2x1 时,它可以做到这一点。
ncurses(任何 X/Open Curses)还有其他功能(例如 addchstr
) that don't advance the cursor, but I don't see those mentioned in the python curses reference.
由于 ncurses 将打印您想要的字符,而且这是一个孤立的案例,解决方法是将 addstr 包装在 try 语句中,例如,
try:
window.addstr('*', color_pair(1))
except curses.error:
pass
密码是:
from curses import *
from curses.panel import *
def main(stdscr):
start_color()
curs_set(0)
init_pair(1, COLOR_BLACK, COLOR_CYAN)
posy = posx = 0
window = newwin(1, 1, posy, posx)
panel = new_panel(window)
window.addstr('*', color_pair(1))
update_panels()
doupdate()
while True:
key = stdscr.getch()
if key == ord('j'):
posy+=1
elif key == ord('k'):
posy-=1
elif key == ord('h'):
posx-=1
elif key == ord('l'):
posx+=1
elif key == ord('q'):
endwin()
break
panel.move(posy,posx)
update_panels()
doupdate()
if __name__ == '__main__':
wrapper(main)
我收到这个错误:
Traceback (most recent call last):
File "test_1_height_error.py", line 34, in <module>
wrapper(main)
File "/usr/lib/python3.7/curses/__init__.py", line 94, in wrapper
return func(stdscr, *args, **kwds)
File "test_1_height_error.py", line 12, in main
window.addstr('*', color_pair(1))
_curses.error: addwstr() returned ERR
但是,如果我将第 10 行从 window = newwin(1, 1, posy, posx) 更改为 window = newwin(2, 1, posy, posx) 即更改 nlines args大于 1 那么它工作正常。
我真的不明白为什么我会遇到这个问题。
addch
以及由它构建的任何内容(例如 addstr
)打印文本和 使光标前进 超过打印的内容。
A 1x1 window 不够大,无法写一个字符并换行到下一行(因为你填充行)。当 window 是 2x1 时,它可以做到这一点。
ncurses(任何 X/Open Curses)还有其他功能(例如 addchstr
) that don't advance the cursor, but I don't see those mentioned in the python curses reference.
由于 ncurses 将打印您想要的字符,而且这是一个孤立的案例,解决方法是将 addstr 包装在 try 语句中,例如,
try:
window.addstr('*', color_pair(1))
except curses.error:
pass