Как добавить графический интерфейс в мой проект Python с помощью kivy?

Я хочу создать графический интерфейс для старого проекта Python с использованием kivy, и я хочу, чтобы вещи были разделены между старыми классами проекта и виджетами kivy, но я не знаю, как отображать информацию из атрибута класса, не меняя его на свойство Kivy. .

class Person(object):
    """ Person information """
    def __init__(self, name, last_name, age):
        self.name = name
        self.last_name = last_name
        self.age = age

Когда я прочитал, как работает Kivy, я подумал, что должен сделать что-то вроде этого:

class PersonWidget(Widget):
    """ Person Kivy's widget """
    name = StringProperty("")
    last_name = StringProperty("")
    age = NumericProperty("")

И затем файл .kv:

#:kivy 1.0.9

<PersonWidget>:

    canvas:
        pos: 0, 0
        size: 100, 100

    Label:
        text: str(root.name)

Игнорируя неполный файл .kv, есть ли другой способ напечатать в виджете некоторые атрибуты класса, не определяя их, как свойство Kivy? Потому что я хотел бы использовать Person и PersonWidget для разделения логики и кода графического интерфейса.

PD: Я новичок в stackoverflow, извините, если что-то не так или не так.

Спасибо.


person L. Kammann    schedule 21.01.2019    source источник


Ответы (1)


Вы должны узнать больше о правилах kivy... ;o)
Для вашего класса Person вы должны создать правило kv <Person>

<Person>:
    canvas:
        pos: 0, 0
        size: 100, 100
    Label:
        id: person_label
        text: ""

Внутри этого правила вы можете добавлять любые виджеты, но если вы хотите получить доступ к любому из них со стороны .py, он должен иметь id для его идентификации.
Чтобы использовать его из вашего класса, вам просто нужно сделать self.ids.person_label.text = "The Person's name"

person noEmbryo    schedule 21.01.2019