将彩色文本渲染到python

时间:2017-08-15 01:53:51

标签: python python-3.x ncurses python-curses

是否有可能/如何在python中将前端格式化的彩色文本呈现给curses.window

基本上,我试图在已经呈现彩色日志输出的现有控制台应用程序之上添加一些简单的基于curses的UI内容,我试图将其重定向到curses {{1} }。

然而,似乎curses以某种方式关闭了控制颜色的各种控制代码。

这是一个最小的脚本,使用window作为文本来源的替身:

colorama

这呈现:

import colorama
import curses

def run_gui():
    stdscr = curses.initscr()
    curses.start_color()
    curses.use_default_colors()

    stdscr.insertln()
    stdscr.insertln()
    stdscr.insstr(colorama.Fore.RED+'wattt'+colorama.Style.RESET_ALL)
    stdscr.insertln()
    stdscr.insstr(colorama.Fore.GREEN+'wattt'+colorama.Style.RESET_ALL)
    stdscr.insertln()
    stdscr.insstr(colorama.Fore.YELLOW+'wattt'+colorama.Style.RESET_ALL)
    stdscr.insertln()
    stdscr.refresh()

if __name__ == '__main__':

    run_gui()

有没有办法告诉curses允许正常的控制代码,还是我不得不重做所有现有的颜色功能?

1 个答案:

答案 0 :(得分:0)

简短:后者("返工")。

长:

"正常控制码"碰巧与设备有关; curses为终端提供与设备无关的接口。引自manual page

  

ncurses库例程为用户提供了一个与终端无关的例程   合理优化更新字符屏幕的方法。

实际上大多数curses实现都通过terminfo-based functions提供了一个低级接口,可以让你做一些特殊的调整,但是

  • Python的绑定并不包括(它只涵盖ncurses的一部分),并且
  • 对于所建议的那种东西,它没有用,因为它正在操纵信息,curses旨在知道如何比你的程序更有效地管理。防止它知道屏幕上的内容会干扰诅咒的作用。

Python文档提到了属性,例如,在window.insstr(str[, attr])

您的示例可以执行类似

的操作
stdscr.insstr("wattt", COLOR_PAIR(COLOR_RED))

之前曾询问过您所询问的内容。例如: