Python urwid中的斜体文本

Python urwid中的斜体文本,python,urwid,Python,Urwid,我正在使用urwid设计一个curses用户界面。我可以使用显示属性来显示粗体、带下划线或突出的文本。可以用斜体吗?简短回答 理论上,是的 实践中:还没有。 长话短说 基本上,curses使用ECMA-48中所谓的“ANSI转义序列”来执行光标移动、颜色或任何非纯线性文本输出的操作。(比照terminfo,它确实比这更复杂,但这就是它最终归结的原因。) 颜色、粗体文本等被指定为SGR(“选择图形格式副本”)命令的一部分:CSI$n m(其中CSI是“控制序列导入器”^[[/code>,也就是ES

我正在使用urwid设计一个curses用户界面。我可以使用显示属性来显示粗体、带下划线或突出的文本。可以用斜体吗?

简短回答 理论上,是的

实践中:还没有。

长话短说 基本上,curses使用ECMA-48中所谓的“ANSI转义序列”来执行光标移动、颜色或任何非纯线性文本输出的操作。(比照terminfo,它确实比这更复杂,但这就是它最终归结的原因。)

颜色、粗体文本等被指定为SGR(“选择图形格式副本”)命令的一部分:
CSI$n m
(其中
CSI
是“控制序列导入器”
^[[/code>,也就是
ESC
+
[
)。在一系列令人困惑的东西中,这些东西与奇异的(控制台上甚至支持blackletter!),斜体文本有一个控制序列:
^[[3m
启用,
^[[23m
禁用

Wikipedia有一个。然而,大多数更…深奥的序列“几乎不被支持”。粗体和突出的几乎被普遍支持,下划线是常见的。虽然斜体似乎正在获得吸引力,但许多(?)终端仿真器仍然不支持它,如果您的程序需要在异构环境中运行,这可能是一个问题。最好不要打赌黑信支持很快就会到来

现在,xterm、urxvt和st确实支持它;PuTTy不支持

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

print 'plain text ^[[3m italic text ^[[0m plain text'

Urwid还没有(从1.3.0版开始)。我已经浏览了源代码(有趣的是
display\u common.py
curses\u display.py
raw\u display.py
)。我想修补对斜体文本的支持应该不会太难,但作为一个Urwid初学者,我现在已经够不着了。

那个转义序列在xterm、urxvt和st中都能工作,所以看起来它的支持比你说的要广泛。谢谢你的提示!似乎我已经尝试过了,正是那些这样做的不会。^^我会尽快更新我的答案,只要我有时间接触一些xterm。