我正在使用 kivy 编写一个桌面应用程序,但它的运行速度没有我想要的那么快。我有很多标签和按钮,它们有很多格式,只是颜色和大小不同。我希望如果我创建一个带有格式的自定义 kivy 标签将提高性能。我已经有了所有带有格式的标签,我希望将它们全部更改为我的自定义 kivy 标签。
kivy 文件中的原始代码。这是我所有标签的样子。
Label:
text: "some text"
color: (0, 0.2, .4, 1)
size_hint: 1, 0.04
text_size: self.size
halign: 'left'
valign: 'top'
bold: True
canvas.before:
Color:
rgba: 1, 1, 1, 1
Rectangle:
pos: self.pos
size: self.size
所以我尝试创建一个 FormattedLabel 类来添加我想要的所有格式,然后在 kivy 文件中更改我的 FormattedLabel 标签。
Python 文件
import kivy
from kivy.app import App
from kivy.uix.label import Label
from kivy.properties import ListProperty
from kivy.graphics import Color, Rectangle
from kivy.lang import Builder
with open("crea_kivy_file.kv", encoding='utf8') as f:
Builder.load_string(f.read())
class FormattedLabel(Label):
background_color = ListProperty()
def __init__(self, *args, **kwargs):
Label.__init__(self, *args, **kwargs)
self.canvas.add(Color(self.background_color))
self.canvas.add(Rectangle(pos=self.pos, size=self.size))
self.text_size= self.size
self.halign= 'left'
self.valign= 'top'
self.bold= True
基维文件
FormattedLabel:
text: "some text"
color: (0, 0.2, .4, 1)
size_hint: 1, 0.04
background_color: 0,0,0,1
但它并没有产生与我的原始代码相同的结果: 1. 矩形的大小是关闭的(更窄和更高),因此字母不再适合直线。我不知道如何将矩形的大小绑定到 kivy 文件中的 size_hint。2、标签颜色不变。我不知道是因为代码不应该在init下,还是因为我只是不知道如何正确编写它。在此先感谢您的帮助!