文本标记

在 1.1.0 版本加入.

在 1.10.1 版本发生变更: 添加了 font_contextfont_features`text_language`(仅限 Pango)

我们提供了一种简单的文本标记,用于内联文本样式。其语法与`BBCode <http://en.wikipedia.org/wiki/BBCode>`_相似。

标签定义为 [tag],并应有对应的 [/tag] 闭合标签。例如:

[b]Hello [color=ff0000]world[/color][/b]

可用的标签如下:

[b][/b]

激活粗体文本

[i][/i]

激活斜体文本

[u][/u]

带下划线的文本

[s][/s]

删除线文本

[font=<str>][/font]

更改字体(注意:此处指的是TTF文件或已注册的别名)

[font_context=<str>][/font_context]

更改字体的上下文,使用字符串值"none"表示隔离上下文。

[font_family=<str>][/font_family]

用于绘制时请求的字体族。这仅在字体上下文(font context)下有效,并优先于 [font]。详情请参阅 kivy.uix.label.Label

[font_features=<str>][/font_features]

OpenType字体特性,以CSS格式表示,此内容直接传递给Pango。请求特定特性的效果取决于加载的字体、库版本等。仅限Pango,需v1.38或更高版本。

[size=<size>][/size]

更改字体大小。<size>应为整数,可附带单位(如``16sp``)。

[color=#<color>][/color]

修改文本颜色

[ref=<str>][/ref]

添加一个交互区域。该引用及其内部的所有单词框将在 MarkupLabel.refs 中可用。

[anchor=<str>]

在文本中放置一个锚点。您可以通过 MarkupLabel.anchors 获取锚点在文本中的位置。

[sub][/sub]

将文本显示在其前一个文本的下标位置。

[sup][/sup]

将文本显示为相对于其前文本的上标位置。

[text_language=<str>][/text_language]

文本的语言,这是一个RFC-3066格式的语言标签(作为字符串),例如“en_US”、“zh_CN”、“fr”或“ja”。这会影响字体选择、度量和渲染。例如,相同的文本字节在`ur`和`ar`语言中可能看起来不同,尽管两者都使用阿拉伯文字。使用字符串`'none'`可恢复为区域设置检测。仅限Pango。

如果你需要从当前文本中转义标记,请使用 kivy.utils.escape_markup()

class kivy.core.text.markup.MarkupLabel(*largs, **kwargs)[源代码]

基类:LabelBase

标记文本标签。

更多信息请参阅模块文档。

property anchors

获取所有 [anchor=...] 的位置:

{ 'anchorA': (x, y), 'anchorB': (x, y), ... }
property markup

返回所有标记分割后的文本:

>>> MarkupLabel('[b]Hello world[/b]').markup
>>> ('[b]', 'Hello world', '[/b]')
property refs

获取所有``[ref=...]``的边界框::

{ 'refA': ((x1, y1, x2, y2), (x1, y1, x2, y2)), ... }
render(real=False)[源代码]

返回一个元组 (width, height),用于根据用户约束创建图像。(width, height) 包含内边距。

shorten_post(lines, w, h, margin=2)[源代码]

根据标签选项将文本缩短为单行。

该函数作用于已经布局好的文本,因为在标记中,文本的不同部分可能具有不同的大小和选项。

如果 text_size [0] 为 None,则返回的行保持不变。否则,这些行会被转换为适合受限宽度 text_size [0] 的单行。

参数:

lines:描述文本的 LayoutLine 实例列表。w:整数,文本在行中的宽度,包括内边距。h:整数,文本在行中的高度,包括内边距。margin:整数,在两侧额外留出的空间。这是在 padding_x 之外增加的。

返回:

返回一个三元组 (xw, h, lines),其中 wh 与输入类似,包含文本的最终宽度和高度(包括内边距)。lines 是一个列表,包含一个 LayoutLine 对象,该对象包含该行的单词。