python - urwid 中的斜体文本

标签 python urwid

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

最佳答案

简答

理论上,是的。

在实践中:还没有。

长答案

基本上,curses 使用来自 ECMA-48 的所谓“ANSI 转义序列”来进行光标移动、颜色或任何非纯线性文本输出。 (它确实比这更复杂,参见 terminfo,但这就是它最终归结为的内容。)

颜色、粗体文本等被指定为 SGR(“选择图形再现”)命令的一部分:CSI $n m(CSI 是“控制” Sequence Introducer'^[[,即ESC+[)。在一系列令人费解的离奇事物中(甚至还支持 blackletter!在控制台上!), 有一个用于斜体文本的控制序列:^ [[3m 启用,^[[23m 禁用。

维基百科有一个 list of SGR commands .然而,大多数更……深奥的序列“几乎从未得到支持”。粗体和突出显示几乎得到普遍支持,下划线很常见。虽然斜体似乎越来越受欢迎,但许多(?)终端仿真器仍然不支持它——如果您的程序需要在异构环境中运行,这可能是一个问题。最好不要押注 blackletter 支持很快就会到来。

目前,xterm、urxvt 和 st 支持它; PuTTy 没有。

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

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

ncurses already seems to support italic text. 然而,Urwid 还没有(从 1.3.0 版开始)。我查看了源代码(有趣的部分是 display_common.pycurses_display.pyraw_display.py)。我想打补丁以支持斜体文本应该不会太难,但作为一个 Urwid 初学者,我现在还遥不可及。

关于python - urwid 中的斜体文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26207552/

相关文章:

python - 就地打印并更新矩阵

python - 使用 PyMongo 获取按发布日期降序排列的不同值

python - 如何从 pyspark 数据帧创建持久 View

python - OrderedDict 推导式

python - urwid 动态更改调色板颜色

python - 如何在 CentOS 6.4 上安装 urwid 1.1.1?

Python TUI 库

python - 如何使用 python beautiful soup 只获取 level 1 navigableText?

python - 将推文创建时间转换为 UTC

python - 如何使 python 库 "urwid"的按钮看起来漂亮?