Я пишу настольное приложение, используя 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, чтобы добавить к нему все нужные мне форматирования, а затем просто изменить метку для FormattedLabel в файле kivy.
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
Kivy-файл
FormattedLabel:
text: "some text"
color: (0, 0.2, .4, 1)
size_hint: 1, 0.04
background_color: 0,0,0,1
Но он не дал таких же результатов, как мой исходный код: 1. Размер прямоугольника равенвыкл (уже и выше), чтобы буквы больше не помещались по прямой линии.Я не знаю, как связать размер прямоугольника с size_hint в файле kivy.2. Цвет этикетки не меняется.Я не знаю, так ли это, потому что код не должен быть под init или потому что я просто не понимаю, как правильно его написать.Заранее спасибо за помощь!