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 类具有 halignvalign 属性,但文本图像(纹理)的大小仅足以使字符位于 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 三个标签