Kivy 教程

Kivy 主页

Kivy 基础知识

Kivy 入门 Kivy 下载安装和环境配置 Kivy 架构 Kivy 文件语法 Kivy 应用程序 Kivy Hello World Kivy 应用生命周期 Kivy 事件 Kivy 属性 Kivy 输入 Kivy 行为

Kivy 按钮

Kivy 按钮 Kivy 按钮事件 Kivy 按钮颜色 Kivy 按钮大小 Kivy 按钮位置 Kivy 圆形按钮 Kivy 禁用按钮 Kivy 图片按钮

Kivy 小部件

Kivy -小部件 Kivy 标签 Kivy 文本输入 Kivy 画布 Kivy 线条 Kivy 复选框 Kivy 下拉列表 Kivy 窗口 Kivy ScrollView Kivy 轮播 Kivy 滑块 Kivy 图像 Kivy 弹出窗口 Kivy 开关 Kivy 旋转器 Kivy 拆分器 Kivy 进度条 Kivy 气泡 Kivy 选项卡式面板 Kivy 散点图 Kivy 手风琴 Kivy 文件选择器 Kivy 颜色选择器 Kivy 代码输入 Kivy 模态视图 Kivy 切换按钮 Kivy 相机 Kivy 树形视图 Kivy reStructuredText Kivy 操作栏 Kivy 视频播放器 Kivy 模板视图 Kivy VKeyboard Kivy 触摸涟漪 Kivy 音频 Kivy 视频 Kivy 拼写 Kivy 效果 Kivy 输入记录器 Kivy OpenGL Kivy 文本 Kivy 文本标记 Kivy 设置

Kivy 布局

Kivy 布局 Kivy 浮动布局 Kivy 网格布局 Kivy 框布局 Kivy 堆栈布局 Kivy 锚点布局 Kivy 相对布局 Kivy 页面布局 Kivy 循环布局 Kivy 布局中的布局

Kivy 高级概念

Kivy 配置对象 Kivy Atlas Kivy 数据加载器 Kivy 缓存管理器 Kivy 控制台 Kivy 动画 Kivy MultiStroke Kivy 时钟 Kivy SVG Kivy UrlRequest Kivy 剪贴板 Kivy 工厂 Kivy 手势 Kivy 语言 Kivy 图形 Kivy 绘图 Kivy 打包 Kivy Garden Kivy 存储 Kivy 矢量 Kivy Utils Kivy Inspector 工具 Kivy 工具 Kivy 日志 Kivy 帧缓冲区

Kivy 应用程序和项目

Kivy 绘图应用程序 Kivy 计算器应用程序 Kivy 秒表应用程序 Kivy 相机处理 Kivy 图像查看器 Kivy 贝塞尔曲线 Kivy 画布应力 Kivy 圆形绘制 Kivy 小部件动画 Kivy 杂项

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_horizo​​ntal, 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]

更改字体大小。 应为整数,可带单位(例如 16sp)

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()

输出

当您运行上述程序时,将显示三个标签,其标题位于代码中定义的相应格式属性中−

Kivy 标签

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 应用程序中,并运行该程序。 您应该得到以下显示,显示三个标签以及相应的背景颜色。

Kivy 三个标签