我想使用kivy为旧的python项目创建gui,并且想将旧项目类和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的新手,很抱歉,如果出现混淆或错误的情况。
谢谢。
答案 0 :(得分: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"