Kivy - Label 标签
标签是任何 GUI 工具包中最常用的小部件之一。标签显示任何文本内容,这些内容不能直接编辑。标签用于显示页面标题,作为字段名称的占位符以及文本框等输入控件,或仅用于呈现输出消息。
在 Kivy 中,标签小部件是 Label 类的对象,在"kivy.uix.label"模块中定义。
from kivy.uix.Label import Label lbl = Label(**kwargs)
要自定义标签对象,您可以使用以下属性作为构造函数 − 的关键字参数
bold − bold 是 BooleanProperty,默认为 False。将其设置为 True 以使用字体的粗体版本。请注意,根据您的字体,粗体属性可能对文本渲染没有影响。
color − 文本颜色,格式为 (r, g, b, a)。它是一个 ColorProperty,默认为 [1, 1, 1, 1]。
disabled_color − 标签禁用时的文本颜色,格式为 (r, g, b, a)。它是一个 ColorProperty,默认为 [1, 1, 1, .3]。
font_name − 要使用的字体的文件名。font_name 是一个 StringProperty,默认为"Roboto"。此值取自 Config。
font_size −文本的字体大小,以像素为单位。它是一个 NumericProperty,默认为 15sp。
halign − 文本的水平对齐方式。halign 是一个 OptionProperty,默认为"auto"。可用选项为:auto、left、center、right 和 justify。
italic − 表示使用字体的斜体版本。italic 是一个 BooleanProperty,默认为 False。
markup − 如果为 True,则将使用 MarkupLabel 呈现文本:您可以使用标签更改文本的样式。
outline_color − 文本轮廓的颜色,格式为 (r, g, b)。它是一个 ColorProperty,默认为 [0, 0, 0, 1]
padding − 文本的填充格式为 [padding_left, padding_top, padding_right, padding_bottom]。padding 还接受两个参数形式 [padding_horizontal, padding_vertical] 和一个参数形式 [padding]。
strikethrough − 向文本添加删除线。strikethrough 是一个 BooleanProperty,默认为 False。
text − 标签标题的文本。text 是一个 StringProperty,默认为 ''。例如 −
lbl = Label(text='Hello world')
text_size − 默认情况下,标签不受任何边界框的限制。您可以使用此属性设置标签的大小约束。文本将自动流入约束。因此,尽管字体大小不会减小,但文本将尽可能地排列以适合框,并且任何仍在框外的文本都会被剪裁。
Label(text='long text . . . ', text_size=(200, None))
text_size 是一个 ListProperty,默认为 (None, None),表示默认情况下没有大小限制。
texture − 文本的纹理对象。当属性更改时,会自动呈现文本。纹理是一个 ObjectProperty,默认为 None。
texture_size − 文本的纹理大小。大小由字体大小和文本决定。如果 text_size 为 [None, None],则纹理将是适合文本所需的大小,否则将被剪裁以适合 text_size。
underline − 为文本添加下划线。underline 是一个 BooleanProperty,默认为 False。
valign − 文本的垂直对齐方式。它是一个 OptionProperty,默认为"bottom"。可用选项包括:'bottom'、'middle'(或'center')和'top'。
对齐
尽管 Label 类具有 halign 和 valign 属性,但文本图像(纹理)的大小仅足以使字符位于 Label 的中心。
如果您的文本有换行符,则 valign 属性将不起作用,并且 halign 只会起作用;即使 halign 设置为左(默认情况下),单行文本仍将显示为居中。
要使对齐属性有效,请设置 text_size,即文本对齐的边界框的大小。例如,以下代码将此大小绑定到 Label 的大小,因此文本将在小部件范围内对齐。
Label: text_size: self.size halign: 'left' valign: 'middle'
标记
如果 Label 的标记属性为 True,则文本将使用用于在线文本样式的文本标记进行呈现。与 html 标签一样,文本标记标签具有 [tag],并且应该具有相应的 [/tag] 结束标签。例如 −
[b]Hello [color=ff0000]world[/color][/b]
以下标签可用于构造标签文本 −
Sr.No | 标签 &标签文本描述 |
---|---|
1 | [b][/b] 激活粗体文本 |
2 | [i][/i] 激活斜体文本 |
3 | [u][/u] 带下划线的文本 |
4 | [s][/s] 删除线文本 |
5 | [font=<str>][/font] 更改字体(注意 - 这指的是 TTF 文件或注册别名) |
6 | [size=<size>][/size] 更改字体大小。 |
7 | [color=#<color>][/color] 更改文本颜色 |
8 | [sub][/sub] 将文本显示在相对于其之前的文本的下标位置。 |
9 | [sup][/sup] 将文本显示在相对于其之前的文本的上标位置。 |
例如,这将创建一个标签 hello world,其中 world 以粗体显示
l = Label(text='Hello [b]World[/b]', markup=True)
大小
Label 的大小不受文本内容影响,文本也不受大小影响。为了控制大小,您必须指定 text_size 以限制文本和/或将大小绑定到 Texture_size 以随文本增长。
例如,在 kv 语言脚本中,此标签的大小将设置为文本内容(加上填充)−
Label: size: self.texture_size
示例
现在我们将在以下示例中演示一些 Label 属性的使用。此处将三个标签放置在垂直框布局中。每个标签都使用 Label 类的某些属性构造而成。
from kivy.app import App from kivy.uix.boxlayout import BoxLayout from kivy.uix.label import Label from kivy.graphics import Color, Rectangle from kivy.core.window import Window Window.size = (720, 350) class LblApp(App): def build(self): layout = BoxLayout(orientation='vertical') self.l1 = Label( text='Hello World', color=[1, 0, 0, 1], font_size=40, bold=True ) self.l2 = Label( text='Hello Python', color=[0, 1, 0, 1], font_size=40, italic=True ) self.l3 = Label( text='Hello Kivy', color=[0, 0, 1, 1], font_size=40, font_name='Arial', underline=True ) layout.add_widget(self.l1) layout.add_widget(self.l2) layout.add_widget(self.l3) return layout if __name__ == '__main__': LblApp().run()
输出
当您运行上述程序时,将显示三个标签,其标题位于代码中定义的相应格式属性中−
kv 文件示例
现在将使用"kv"文件创建上述设计。 除了上述 Python 代码中使用的属性之外,我们还将背景颜色应用于每个标签。
Label 类不支持背景颜色属性。 为了克服这个问题,我们在按钮的画布上绘制一个具有所需颜色的矩形作为其填充颜色。 例如 −
Label: canvas: Color : rgba: 0, 1, 0, 0.25 Rectangle: pos:self.pos size : self.size
我们利用此功能为三个标签应用不同的颜色作为背景。
BoxLayout: orientation:'vertical' Label: text:'Hello World' color : [1,0,0,1] font_size : 40 bold : True canvas: Color : rgba: 0, 1, 0, 0.25 Rectangle: pos:self.pos size : self.size Label: text:'Hello Python' color:[0,1,0,1] font_size:40 italic:True canvas: Color : rgba: 1, 1, 0, 0.1 Rectangle: pos:self.pos size : self.size Label: text:'Hello Kivy' color:[0,0,1,1] font_size:40 font_name:'Arial' underline:True
输出
将此"lbl.kv"文件合并到 Python Kivy 应用程序中,并运行该程序。 您应该得到以下显示,显示三个标签以及相应的背景颜色。