【问题标题】:How to merge two different borders in curses如何在curses中合并两个不同的边界
【发布时间】:2019-07-28 10:28:44
【问题描述】:

使用curses for python,如何无缝合并两个边框?例如:

import curses

screen = curses.initscr()
curses.curs_set(0)
screen.border()
screen.refresh()

awindow =  curses.newwin(3, curses.COLS, 0, 0)
awindow.border()
awindow.refresh()

while True:
    curses.noecho()
    c = screen.getch(1, 1)
    if c == ord('q') or c == ord('Q'):
        break

curses.endwin()

这会创建两个窗口,但在边界相交的两个点中存在不连续性。我怎样才能删除它?

【问题讨论】:

    标签: python curses python-curses


    【解决方案1】:

    您可以通过使用ACS_LTEEACS_RTEE 字符覆盖这些空白来做到这一点。 python curses 参考部分 更多信息 指向 ncurses 手册页,说

    如果您对 curses 函数的详细行为有疑问,请查阅您的 curses 实现的手册页,无论是 ncurses 还是专有 Unix 供应商的。手册页将记录所有怪癖,并提供所有可用的函数、属性和 ACS_* 字符的完整列表。

    在这种情况下,信息位于addch 手册页中。

    【讨论】:

    • 如果我只添加screen.addch(2, 0, curses.ACS_LTEE)screen.addch(2, curses.COLS - 1, curses.ACS_RTEE) 两条水平线之一就会消失。我做错了什么?
    • 您的示例在不同的窗口(不是“屏幕”)中绘制边框:awindow.border(),您应该在该窗口中进行修复。
    • awindow.addch(2, curses.COLS - 1, curses.ACS_RTEE) 行给了我错误awindow.addch(2, curses.COLS - 1, curses.ACS_RTEE)_curses.error: addch() returned ERR
    • 你必须捕捉/忽略写入curses窗口右下角的异常(that有一个问题/答案)。
    • 谢谢。只需将 addch 替换为 insch 对我有用。
    猜你喜欢
    • 2013-07-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-23
    • 2018-07-12
    • 2022-06-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多