我試圖給我的curses輸出添加顏色。然而,挑戰在於文本是通過一個單獨的長字體打印的,即self.all_results。有沒有辦法給字符串的單個部分添加顏色。Curses中的顏色
def main(self,stdscr):
x,y = 0,0 # size of the window
xx,yy = 50,200 # where to place window - up,across
pad = curses.newpad(150,150) # nlines, ncols
pad_pos = 0
exit = False
pad.addstr(4,0,str(self.all_results))
while not exit:
sleep(0.2)
if self.timer != None:
if time() - start > self.timer:
self.stop = True
break
pad.addstr(0,0,str(self.format_results()))
pad.refresh(pad_pos,0, x,y, xx,yy)
cmd = stdscr.getch()
stdscr.nodelay(1)
if cmd != -1:
pad.refresh(pad_pos,0, x,y, xx,yy)
if len(self.format_results().split('\n')) > 100:
if cmd == curses.KEY_DOWN:
if pad_pos < len(self.format_results())+1:
pad_pos += 1
try:
pad.refresh(pad_pos,0, x,y, xx,yy)
except curses.error:
pass
elif cmd == curses.KEY_UP:
if pad_pos != 0:
pad_pos -= 1
try:
pad.refresh(pad_pos,0, x,y, xx,yy)
except curses.error:
pass
如何添加顏色字符串的一部分,取決於如何選擇串色的哪一部分。它是通過偏移到字符串中嗎?由字符串的內容?通過位置在屏幕上? – 2014-09-29 14:08:45
字符串很像...'probe1 | NY |錯誤\ nprobe1 | NY | OK' 我想ERROR以紅色和OK以綠色。, – felix001 2014-09-29 14:10:18
當然。將字符串拆分成您想要着色的部分,並且不需要着色。調用'pad.attron'和'pad.attroff'來調用'pad.addstr'來獲得想要着色的部分。 – 2014-09-29 14:13:29