urwid中的斜体文本

时间:2014-10-05 21:46:47

标签: python urwid

我正在使用urwid设计一个curses ui。我可以使用显示属性来显示粗体,下划线或突出显示的文本。是否可以使用斜体?

1 个答案:

答案 0 :(得分:1)

简短回答

理论上,是的。

在实践中:还没有。

答案很长

基本上,curses使用ECMA-48中所谓的“ANSI转义序列”进行光标移动,颜色或任何非纯线性文本输出。 (它真的比那更令人费解,参见terminfo,但这就是它最终归结为的。)

颜色,粗体文本等被指定为SGR(“选择图形再现”)命令的一部分:CSI $n mCSI是“控制序列介绍人”^[[ ,即ESC + [)。奇怪的是(甚至支持 blackletter !在控制台上!),其中斜体文本的控制序列:{{1}启用,^[[3m禁用。

维基百科有一个list of SGR commands。然而,大多数......更深奥的序列“几乎从未得到支持”。大胆而杰出的人几乎得到普遍支持,下划线很常见。虽然斜体似乎正在获得牵引力,但许多(?)终端仿真器仍然不支持它 - 如果您的程序需要在异构环境中运行,这可能是一个问题。最好不要在短时间内支持黑名单支持。

现在,xterm,urxvt和st都支持它; PuTTy没有。

如果您的终端支持,您可以自己试试。您必须使用 Ctrl + V + Esc 来获取“真正的”转义字符,而不是^[[23m,这只是一种符号表示。

^[

ncurses already seems to support italic text. 但是,Urwid还没有(从1.3.0版本开始)。我查看了源代码(有趣的位是print 'plain text ^[[3m italic text ^[[0m plain text' display_common.pycurses_display.py)。我想补贴斜体文本不应该太难,但作为一个Urwid初学者,我现在已经无法接触到了。