Python诅咒矩形边框

vxf3dgd4  于 2023-06-20  发布在  Python
关注(0)|答案(1)|浏览(91)

我正在编写一个大量使用curses.textpad.rectangle函数的python程序。它使用─┐│字符绘制矩形。我想知道我是否可以使用任何其他字符作为边框。我不认为函数本身支持它,那么还有其他函数可以使用吗?
例如,以下代码使用单行作为边框:

from curses.textpad import rectangle
from curses import wrapper

@wrapper
def main(stdscr):
    rectangle(stdscr, 2, 2, 10, 10)

我想使用双线(使用=#║符号)。我如何才能做到这一点?

mccptt67

mccptt671#

矩形代码应该不会太难重写来做你想做的事情:

def rectangle(win, uly, ulx, lry, lrx):
    """Draw a rectangle with corners at the provided upper-left
    and lower-right coordinates.
    """
    win.vline(uly+1, ulx, curses.ACS_VLINE, lry - uly - 1)
    win.hline(uly, ulx+1, curses.ACS_HLINE, lrx - ulx - 1)
    win.hline(lry, ulx+1, curses.ACS_HLINE, lrx - ulx - 1)
    win.vline(uly+1, lrx, curses.ACS_VLINE, lry - uly - 1)
    win.addch(uly, ulx, curses.ACS_ULCORNER)
    win.addch(uly, lrx, curses.ACS_URCORNER)
    win.addch(lry, lrx, curses.ACS_LRCORNER)
    win.addch(lry, ulx, curses.ACS_LLCORNER)

修改(猴子补丁)curses.ACS_* 或者重写这个函数,比如说,double_line_rectangle(...),然后把你想要的字符放在curses.X点。就像这样:

def rectangle(win, uly, ulx, lry, lrx):
    """Draw a double-line rectangle with corners at the provided upper-left
    and lower-right coordinates.
    """
    win.vline(uly+1, ulx, u'\u2551', lry - uly - 1)
    win.hline(uly, ulx+1, u'\u2551', lrx - ulx - 1)
    win.hline(lry, ulx+1, u'\u2551', lrx - ulx - 1)
    win.vline(uly+1, lrx, u'\u2551', lry - uly - 1)
    win.addch(uly, ulx, u'\u2554')
    win.addch(uly, lrx, u'\u2557')
    win.addch(lry, lrx, u'\u255D')
    win.addch(lry, ulx, u'\u255A')

Here's a lookup for all the cool unicode characters for drawing boxes

相关问题