如何解决在Python curses中模拟ANSI颜色转义代码
我正在尝试在我的python-curses应用程序中显示tiv生成的“文本图像”。当然,我只能打印文本,因为(n)curses无法处理转义序列,因此我必须自己做。我被困在如何做背景色上。这是一段代码:
def makeData(data):
out = []
pos = 0
ccol = ()
while pos < len(data):
if ord(data[pos]) == 27: #if it's a colour escape sequence
pos += 2
if data[pos] == "0": pos += 2; continue #tiv resets after every line,ignore that
if data[pos] == "4": fg = False; bg = True
else: fg = True; bg = False
pos += 5 #skip 8;5;
num = ""
while data[pos] != "m":
num += data[pos]
pos += 1
num = int(num)
pos += 1
ccol = (fg,bg,num)
else: #otherwise,add the character with the current colour to the buffer
out.append((ccol,data[pos]))
pos += 1
return out
def main(stdscr):
curses.use_default_colors()
for i in range(0,curses.COLORS):
curses.init_pair(i + 1,i,-1)
y = 1
x = 1
for char in self.data:
if char[1] == "\n":
y += 1
x = 1
else:
self.s.addstr(y,x,char[1],curses.color_pair(char[0][2]))
x += 1
self.s.refresh()
这可以解析前景色和背景色,但是我仍然坚持如何使用正确的背景打印字符。现在,它可以在正确的前景下使用,而没有背景。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。