จะเพิ่ม gui ในโครงการ python ของฉันโดยใช้ kivy ได้อย่างไร

ฉันต้องการสร้าง gui สำหรับโปรเจ็กต์ 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 เพื่อแยกลอจิกและโค้ด gui

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