Использование классов на языке KV - PullRequest
0 голосов
/ 28 сентября 2018
MyScreenManager:
    id: myscreenmanager
    transition: FadeTransition()
    ScreenOne:
    ScreenTwo:

<Widget>:
    font_name: 'example.ttf'

<ScreenOne>:
     ...

<ScreenTwo>:
     ...

Когда я использую класс на языке kv, я хочу знать, как ClassName: отличается от <ClassName>:.

Мне кажется, что может быть только один ClassName:, которыйназывается корневым объектом, иначе он скажет

'.kv'

разрешен только один корневой объект. Таким образом, ClassName: обычно является диспетчером экрананасколько я видел в других кивийских примерах.

Тогда как они действуют по-другому?Почему я не могу просто сделать <MyScreenManager>:?

(Это не дает никакой ошибки, но как-то не работает.)

Это действительно смущает меня.

1 Ответ

0 голосов
/ 28 сентября 2018

<class>: - это правила, если kivy встречает виджет с этим классом, он применяет содержимое правил подбора.Документация Kivy сравнивает это с правилами CSS, если вы знаете какую-то веб-разработку.

class: определяет корневой виджет.В kivy виджеты образуют дерево, поэтому у каждого виджета есть один родитель и много детей - кроме одного корневого виджета, у которого нет родителя.Это дерево важно, потому что, например, оно определяет порядок отображения виджетов.Если бы у вас было два корня, в каком порядке они должны рисовать?(и если вы просто скажете «ну, только один, а затем второй», то вы также можете просто создать один корень и добавить старые корни в этом порядке к новому корню).Наличие только одного корня значительно упрощает это.

Корень часто представляет собой некий макет или контейнер, поскольку часто требуется, чтобы в приложении отображалось несколько виджетов, а наличие контейнера упрощает это.Но у вас также может быть приложение kivy с кнопкой в ​​качестве корневого виджета.

Вам не нужно иметь корневой виджет в файле kv.Это может иметь смысл, например, при наличии нескольких файлов kv для разных стилей.Корневой виджет также может быть создан в методе App.build () .

Kv-файлы имеют еще два вида правил, см. Документацию .Там также объясняется разница между правилами и корневым виджетом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...