【发布时间】:2018-10-14 15:18:56
【问题描述】:
我在使用 Python 在 Curses 中创建矩形时遇到了一些问题。
这是我的代码:
import curses
from curses.textpad import Textbox, rectangle
def draw_menu(stdscr):
stdscr.clear()
stdscr.refresh()
while True:
stdscr.refresh()
writebox_uly = (int(stdscr.getbegyx()[0]))
writebox_ulx = (int(stdscr.getbegyx()[1]))
writebox_lry = (int(stdscr.getmaxyx()[0] * 0.7))
writebox_lrx = (int(stdscr.getmaxyx()[1] - 1))
rectangle(stdscr, writebox_uly, writebox_ulx, writebox_lry, writebox_lrx)
editwin_uly = (int(stdscr.getmaxyx()[0] * 0.7 + 1))
editwin_ulx = (int(stdscr.getbegyx()[1]))
editwin_lry = (int(stdscr.getmaxyx()[0] - 1))
editwin_lrx = (int(stdscr.getmaxyx()[1] - 2))
rectangle(stdscr, editwin_uly, editwin_ulx, editwin_lry, editwin_lrx)
def main():
curses.wrapper(draw_menu)
if __name__ == "__main__":
main()
您可能会注意到下框的右下角不是内联的。这是因为editwin_lrx = (int(stdscr.getmaxyx()[1] - 2))
这条线将右下 X 坐标(右下角)设置为终端的最大宽度,减去 2
将其更改为 editwin_lrx = (int(stdscr.getmaxyx()[1] - 5)) 会使框更靠左。
因此,理论上,将其更改为 editwin_lrx = (int(stdscr.getmaxyx()[1] - 1)) 会将其稍微向右推。
但它不会崩溃。
Traceback (most recent call last):
File "temp.py", line 32, in <module>
main()
File "temp.py", line 29, in main
curses.wrapper(draw_menu)
File "/usr/lib/python3.6/curses/__init__.py", line 94, in wrapper
return func(stdscr, *args, **kwds)
File "temp.py", line 26, in draw_menu
rectangle(stdscr, editwin_uly, editwin_ulx, editwin_lry, editwin_lrx)
File "/usr/lib/python3.6/curses/textpad.py", line 16, in rectangle
win.addch(lry, lrx, curses.ACS_LRCORNER)
_curses.error: addch() returned ERR
是否可以将第二个框的右侧延伸到最边缘,使其与第一个框内联?
【问题讨论】:
标签: python-3.x terminal python-curses