python - _curses.error : addwstr() returned ERR on changing nlines to 1 on newwin method

标签 python ncurses python-curses

代码是:

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 )打印文本并将光标移过打印的内容。

一个 1x1 窗口不够大,无法写入一个字符并换行到下一行(因为您填写了该行)。当窗口为 2x1 ,它可以做到这一点。

ncurses(任何 X/Open Curses)具有其他不推进光标的功能(例如 addchstr ),但我没有看到 python curses reference 中提到的那些.

由于 ncurses 将打印您想要的字符,并且这是一个孤立的情况,因此解决方法是将 addstr 包装在 try 语句中,例如,

try:
    window.addstr('*', color_pair(1))
except curses.error:
    pass

关于python - _curses.error : addwstr() returned ERR on changing nlines to 1 on newwin method,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54409924/

相关文章:

python - 在将总行附加到数据框后删除 Pandas 数据框索引的名称

python - 如何正确刷新 curses 窗口?

c - 通过 ncurses 的引用行为传递

python - 在 stdscr 中解释 "ENTER"按键(Python 中的 curses 模块)

python - 在 python curses 中换行输出

python - 当 addstr 到 9、9 时,ncurses 10,10 pad 会导致错误

python - OpenCV VideoCapture仅在5个read()之后更新

python - Django 自定义注解函数

Python oauth2 - 无属性 'HTTPSConnection'

c++ - 如何将 PDCurses 链接到 Windows 上的 C++ 应用程序?