微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

subwin窗口应该比内容大一号吗

如何解决subwin窗口应该比内容大一号吗

我有下面的一段代码,除非 n_rows > 3n_cols > 3,否则它不会工作。否则我会收到此错误

    Traceback (most recent call last):
      File "script.py",line 16,in <module>
        curses.wrapper(main)
      File "/usr/lib/python3.8/curses/__init__.py",line 105,in wrapper
        return func(stdscr,*args,**kwds)
      File "script.py",line 10,in main
        window.addstr(2,2,'2')
    _curses.error: addwstr() returned ERR

这种类型的错误通常发生在窗口外打印时(这里不是这种情况)。

    def main(stdscr):
        n_rows = 3
        n_cols = 3
        window = stdscr.subwin(n_rows,n_cols,0)
        window.addstr(0,'0')
        window.addstr(1,1,'1')
        window.addstr(2,'2')
    
        stdscr.getch()
    
    
    if __name__ == '__main__':
        curses.wrapper(main)

我的问题是什么解释了窗口必须大一号才能工作的原因?

解决方法

程序正在窗口的右下角打印并返回错误,因为它无法换行(或向上滚动)。

addch 联机帮助页说

  • 如果scrollok没有开启,在右下角写一个字符 保证金成功。但是,返回错误,因为它不是 可以换行

scrollok(除非明确设置否则为假):

scrollok 选项控制当窗口光标 移出窗口或滚动区域的边缘,或者作为 底行换行操作的结果,或键入最后一行的最后一个字符。如果禁用,(bf 是 FALSE),光标左移 在底线。如果启用(bf 是 TRUE),则滚动窗口 向上一行(注意要在终端上获得物理滚动效果,还需要调用idlok)。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。