Programado
Docs» kivy:dynamic_classes

Динамические классы

Пользовательский класс в Kivy еще называют динамическим классом. Динамический класс создается на основе базового класса, при этом для него можно сразу определить свой набор свойств. Например, в контейнере BoxLayout имеется три кнопки, для которых заданы идентичные свойства:

BoxLayout:
    Button:
        text: "Кнопка 1"
        pos_hint: {'center_x':.5, 'center_y':.6}
        font_size: '25sp'
        markup: True
    Button:
        text: "Кнопка 2"
        pos_hint: {'center_x':.5, 'center_y':.6}
        font_size: '25sp'
        markup: True
    Button:
        text: "Кнопка 3"
        pos_hint: {'center_x':.5, 'center_y':.6}
        font_size: '25sp'
        markup: True

Для того чтобы не повторять многократно задание одних и тех же свойств каждому элементу, можно сформировать динамический класс и в нем один раз задать этот набор свойств:

<MyButton@Button>:
    pos_hint: {'center_x':.5, 'center_y':.6}
    font_size: '25sp'
    markup: True
BoxLayout:
    MyButton:
        text: "Кнопка 1"
    MyButton:
        text: "Кнопка 2"
    MyButton:
        text: "Кнопка 3"

Не вдаваясь в смысл этих свойств, проверим это на простом примере:

Пример использования динамического класса

from kivy. app import App
from kivy.lang import Builder
KV = '''
<MyButton@Button>:
    pos_hint: {'center_x':.5, 'center_y':.6}
    font_size: '25sp'
    markup: True
BoxLayout:
    orientation: "vertical"
    MyButton:
        text: "Кнопка 1"
    MyButton:
        text: "Кнопка 2"
    MyButton:
        text: "Кнопка 3"
'''

class MainApp (App):
    def build (self):
        return Builder.load_string(KV)
        
if __name__ == '__main__':
    MainApp().run() 

В этом программном коде создан динамический класс MyButton на основе базового класса Button. Для класса MyButton один раз заданы три свойства. Затем в контейнер BoxLayout, помещаются три кнопки MyButton, для которых задается всего одно свойство – text. Все остальные свойства этих кнопок будут наследованы от динамического класса MyButton@Button. Таким образом, программный код упрощается и сокращается количество строк. После запуска приложения получим следующий результат:

Previous Next

Programado

Table of Contents

Содержание

  • Kivy
  • Процессор_x86-64
  • Вход