0

我想使用 kivy 为旧的 python 项目创建一个 gui,并且我想将旧项目类和 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 来分离逻辑和 gui 代码。

PD:我是 stackoverflow 的新手,如果有什么令人困惑或错误的地方,我很抱歉。

谢谢。

4

1 回答 1

0

您必须了解有关 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"

于 2019-01-21T18:17:12.870 回答