《Python+Kivy(App开发)从入门到实践》自学笔记:简单UX部件——Label标签
创始人
2024-04-02 21:45:43
0

章节知识点总揽

4.2 Label标签

        在Kivy中,Label小部件用于呈现文本,它仅支持ASCII和Unicode编码的字符串(不支持中文),在Label中,可以设置文本内容、字体、大小、颜色、对齐方式、换行、引用以及标记文字等内容。

4.2.1 使用方法

        在.py文件里,使用标签需要引入Label类,通过Label类生成一个标签,再通过add_widget()方法添加到布局中即可,具体方法如下:

from kivy.uix.label import Label
la = Label(text='Hello world')
self.add_widget(la)

        新建main.py文件,使用floatlayout布局,内容如下:

from kivy.app import App
from kivy.uix.floatlayout import FloatLayout
from kivy.uix.label import Labelclass FloatLayoutWidget(FloatLayout):def __init__(self,**kwargs):super().__init__(**kwargs)la = Label(text='Hello world')self.add_widget(la)class LabelApp(App):def build(self):return FloatLayoutWidget()if __name__ == '__main__':LabelApp().run()

        相比之下,在.kv文件里使用标签就非常简单,无需引用即可食用,具体代吗如下:

Label:text:'Hello world'

        修改main.py文件,去掉布局内容,具体如下:

from kivy.app import App
from kivy.uix.floatlayout import FloatLayout
from kivy.uix.label import Labelclass FloatLayoutWidget(FloatLayout):def __init__(self,**kwargs):super().__init__(**kwargs)class LabelApp(App):def build(self):return FloatLayoutWidget()if __name__ == '__main__':LabelApp().run()

        根据main.py中LabelApp()方法命名,新建label.kv文件,内容如下:

Label:text:'Hello world'

        运行main.py文件,如下图所示:

 4.2.2 常用属性

        Kivy为Label标签提供了一些常用的属性,关于Label标签的常用属性及说明如下表所示:

属性说明
text标签显示的文本,默认为空字符串
text_size标签文本大小,默认为(None,None),表示无限制
font_name要使用字体的文件名,可以为绝对路径或resource_find解析的相对路径
font_size文本的字体大小,以像素为单位,默认为15sp
bold字体使用粗体,默认为False
italic字体使用斜体,默认为False
color字体颜色,格式为rgba,默认为白色[1,1,1,1]
halign文本的水平对齐方式,默认为'auto',可选参数为:left、center、right、justify
valign文本的垂直对齐方式,默认为'bottom',可选参数为:bottom、middle(或center)、top
markup是否分割所有标记的文本,默认为False
refs使用[ref=xxx]xxx[/ref]标记部分文本,使用时需要将markup属性设置为True
underline在文本上添加下划线,默认为False
padding_x小部件框内文本的水平填充,默认为0
padding_y小部件框内文本的垂直填充,默认为0
padding以(padding_x,padding_y)格式填充文字
texture文本的纹理对象,属性更改时会自动呈现文本,默认为:None
texture_size文本的纹理大小,由字体大小和文本确定
unicode_errors如何处理Unicode解码错误,可选参数为:“strict”、“replace”(默认)和“ignore”
strikethrough在文本中添加删除线
strip与Python内置函数类似,是否删除空格以及换行符,默认为“False”
outline_color文本轮廓的颜色,格式为rgb,默认为[0,0,0]
outline_width文本周围轮廓的宽度,单位为像素,默认为None表示不会渲染轮廓
max_line要使用的最大行数,默认为0,表示无限制
shorten是否应该尽可能缩短文本内容,默认为False
shorten_from在哪一侧缩短文本,默认为center,可选参数为:left、right和center
split_str当shorten为True时,差分字符串,默认为空字符串
is_shortend是否以缩短时间的方式进行渲染,默认为False
line_height文本的行高,默认为1.0
base_disrection文本的基本方向,当halign为auto(默认)时,会影响水平对齐,可设参数为:None、“ltr”(从左至右)、“rtl”(从右到左)、“weak_ltr”和“weak_rlt”
disabled_color禁用小部件时文本轮廓的颜色,格式为rgb,默认为[0,0,0]
ellipsis_options

使用“...”缩短文本,使用时要设置markup和shorten为Ture,默认为空字典{}

font_blended使用混合字体,默认为True
font_context字体上下文,默认为None表示该字体单独使用
font_family字体系列,仅在使用font_context时使用
font_features将CSS格式的OpenType字体直接传给Pango,默认为空字符串
font_hinting渲染字体的提示选项,可选参数为:“normal”“light”“mono”和None
font_kerning是否为字型渲染启用字距调整,默认为True
mipmap是否将OpenGL mipmapping应用于纹理,默认为False

        实例:设置Label标签的常用属性

        在main.py文件内,我们使用的是BoxLayout布局,具体代码如下:

from kivy.app import App
from kivy.uix.boxlayout import BoxLayoutclass LabelBoxLayout(BoxLayout):def __init__(self,**kwargs):super().__init__(**kwargs)class LabelApp(App):def build(self):return LabelBoxLayout()if __name__ == "__main__":LabelApp().run()

        想要设置Label标签的属性,则需要在label.kv文件内,根据需求设置为其相关属性,代码如下:

:orientation:'vertical'Label:text:'can only display glyphs that is available in the font'font_size:'20sp'color:.9,.2,.1,1italic:Truetext_size:cm(6),mm(20)halign:'right'valign:'middle'strikethrough:TrueLabel:canvas:Color:rgba:(.1,.1,.1,.1)Rectangle:pos:self.possize:self.sizetext:'can only display glyphs that is availabel in the font'color:.2,.2,.9,1bold:Truetext_size:cm(4),cm(2)halign:'left'valign:'top'underline:Trueline_height:2.0

        运行结果如下图所示:

 

4.2.3 标记文本

        在Label中的文本标记非常重要,它可以使样式更加灵活,还可以触发绑定的事件。值得注意的是,在使用时一定要先将markup属性设置为True。在Label标记中可用的属性也非常多,关于Label文本标记的常用属性及说明如下表:

属    性说        明
[b][/b]激活粗体文字
[ref=][/ref]添加一个交互式引用区域
[i][/i]激活斜体文字
[u][/u]带下划线的文字
[s][/s]带删除线的文字
[font=][/font]更改字体
[size=更改字体大小
[color=#][/color]更改字体颜色
[anchor=]在文本中添加锚点
[sub][/sub]在相对于之前的文本的下标位置显示文本
[sup][/sup]将文本显示在相对于其之前的上标位置
[font_context=][/font_context]字体上下文,默认为None时表示该字体单独使用
[font_family=][/font_family]字体系列,仅在使用font_context时使用
[font_features=][/font_features将CSS格式的OpenType字体直接传给Pango,默认为空字符串
[text_language=][/text_language]文本语言

        实例:设置Label标签的标记文本

        main.py文件延用上文的内容,在实例中,main.py文件(与”实例:设置Label标签的常用属性”相比)没有发生改变,依然是让其加载.kv文件。

        在box.kv文件中,应用“实例:设置Button按钮并触发事件”部分属性(color、size等),具体代码如下:

:orientation:'vertical'Label:text:'can only display glyphs that is available in the font'font_size:'20sp'color:.9,.2,.1,1markup:1Label:canvas:Color:rgba:(.1,.1,.1,.1)Rectangle:pos:self.possize:self.sizetext:'can only display glyphs that is availabel in the font'color:.2,.2,.9,1markup:True

        执行main.py后,如下图所示:

 

4.3.4 触发事件

        在通过ref标记(可在前面常用属性表中查询)一段文本后,点击这段文本就可以触发“on_ref_press”事件,在该事件中调用相关的回调函数去处理业务逻辑即可。

实例:设置Label标签的触发事件

        在main.py文件中,引入Label来生成一个标签,在用ref标记前,一定先将markup属性设置为True(“1”也可以表示True),随后在触发事件中绑定,回调函数即可。具体代码如下:

        main,py内容:

from kivy.app import App
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.label import Labelclass LabelBoxLayout(BoxLayout):def __init__(self,**kwargs):super().__init__(**kwargs)#设置引用时,markup属性必须设置为真(True或1等)#将“Label”文本标记,单击“Label”文本时会触发绑定的事件,单击“Hello”文本则不会label_ref = Label(text='Hello[ref=label]Label[/ref]',markup=True,color=(.9,.2,.1,1))#绑定触发事件,回调方法label_ref.bind(on_ref_press=self.print_it)self.add_widget(label_ref)#未使用到self,建议设置为静态方法@staticmethoddef print_it(*args):print('print_it is running')class LabelApp(App):def build(self):return LabelBoxLayout()if __name__ == "__main__":from kivy.core.window import WindowWindow.clearcolor=[1,1,1,1]LabelApp().run()

        运行main.py文件,结果如下图:

        在label.kv文件中,添加一个标签并直接设置“on_ref_press”,这里基本同.py文件内的用法一致,具体代码如下:

:orientation:'vertical'Label:canvas:Color:rgba:(.1,.1,.1,.1)Rectangle:pos:self.possize:self.sizetext:'[ref="click"]can only display[/ref]glyphs that is availabel in the font'color:.2,.2,.9,1markup:Trueon_ref_press:print('ref named click is running')root.print_it()

        使用上文main.py文件,运行结果如下图:

上一篇:简单UX部件——Button按钮

下一篇:简单UX部件——Image图片

相关内容

热门资讯

银河麒麟V10SP1高级服务器... 银河麒麟高级服务器操作系统简介: 银河麒麟高级服务器操作系统V10是针对企业级关键业务...
【NI Multisim 14...   目录 序言 一、工具栏 🍊1.“标准”工具栏 🍊 2.视图工具...
AWSECS:访问外部网络时出... 如果您在AWS ECS中部署了应用程序,并且该应用程序需要访问外部网络,但是无法正常访问,可能是因为...
不能访问光猫的的管理页面 光猫是现代家庭宽带网络的重要组成部分,它可以提供高速稳定的网络连接。但是,有时候我们会遇到不能访问光...
AWSElasticBeans... 在Dockerfile中手动配置nginx反向代理。例如,在Dockerfile中添加以下代码:FR...
Android|无法访问或保存... 这个问题可能是由于权限设置不正确导致的。您需要在应用程序清单文件中添加以下代码来请求适当的权限:此外...
月入8000+的steam搬砖... 大家好,我是阿阳 今天要给大家介绍的是 steam 游戏搬砖项目,目前...
​ToDesk 远程工具安装及... 目录 前言 ToDesk 优势 ToDesk 下载安装 ToDesk 功能展示 文件传输 设备链接 ...
北信源内网安全管理卸载 北信源内网安全管理是一款网络安全管理软件,主要用于保护内网安全。在日常使用过程中,卸载该软件是一种常...
AWS管理控制台菜单和权限 要在AWS管理控制台中创建菜单和权限,您可以使用AWS Identity and Access Ma...