我想在"#"
屏幕中添加str ncurse
,其中包含坐标x(5 to 24)
,y(23 to 42)
这是一个正方形。但我无法想出一个简单的方法。
我试过了:
stdscr.addstr(range(23,42),range(5,24),'#')
但这不起作用。它需要'整数'。
有没有人可以找到一个简单的方法来完成这项工作?
感谢。
答案 0 :(得分:3)
addstr
的前两个参数应该是row,col应该是整数,但是你的传递列表是:
为了使这样的方格:
for x in range(23,42): # horizontal c
for y in range(5,24): # verticale r
stdscr.addstr(y, x, '#')
要填充颜色,闪烁,粗体等,您可以在功能中使用属性:
from curses import *
def main(stdscr):
start_color()
stdscr.clear() # clear above line.
stdscr.addstr(0, 0, "Fig: SQUARE", A_UNDERLINE|A_BOLD)
init_pair(1, COLOR_RED, COLOR_WHITE)
init_pair(2, COLOR_BLUE, COLOR_WHITE)
pair = 1
for x in range(3, 3 + 5): # horizontal c
for y in range(4, 4 + 5): # verticale r
pair = 1 if pair == 2 else 2
stdscr.addstr(y, x, '#', color_pair(pair))
stdscr.addstr(11, 0, 'Press Key to exit: ')
stdscr.refresh()
stdscr.getkey()
wrapper(main)
输出:
老回答:
对于对角线这样做:
for c, r in zip(range(23,42), range(5,24)) :
stdscr.addstr(c, r, '#')
填充对角线的代码示例:
代码 x.py
from curses import wrapper
def main(stdscr):
stdscr.clear() # clear above line.
for r, c in zip(range(5,10),range(10, 20)) :
stdscr.addstr(r, c, '#')
stdscr.addstr(11, 0, 'Press Key to exit: ')
stdscr.refresh()
stdscr.getkey()
wrapper(main)
运行:python x.py
,然后您可以看到:
让Square像:
from curses import wrapper
def main(stdscr):
stdscr.clear() # clear above line.
for r in range(5,10):
for c in range(10, 20):
stdscr.addstr(r, c, '#')
stdscr.addstr(11, 0, 'Press Key to exit: ')
stdscr.refresh()
stdscr.getkey()
wrapper(main)
输出:
PS:从您的代码中看起来您想要填充对角线,所以我稍后编辑了答案为square。