从Python端的一个类访问多个kivy类

时间:2017-05-02 12:42:59

标签: python kivy kivy-language

我在python中有两个Classes,在Kivy文件中有2个不同的Classes中有2个标签,我想从一个Python类控制它:

Class Python(BoyLayout):
    def __init__(self, **kwargs):
        super(Python, self).__init__(*kwargs)
        self.label1 = self.ids["label1"]
        self.label2 = self.ids["label2"]

   def changeText(self):
       self.label1.text = "New Text 1"
       self.label2.text = "New Text 2"

Class NewClass(BoxLayout):
    pass

关于kivy,我有:

<Python>:
    BoxLayout: "vertical"
        Label:
            id:label1
            text: "Text 1"

<NewClass>:
    BoxLayout: "vertical"
        Label:
            id:label2
            text: "Text 2"

在这个例子中,更改只适用于更改label1,但当然它不适用于label2,因为我需要访问NewClass属性,这是我无法锻炼的部分。

另外我想控制第一类中的所有kivy变量(本例中为“Python”) - 希望这是可能的

为了理解,有什么很酷的帮助吗?

1 个答案:

答案 0 :(得分:0)

在一夜好眠之后,我可以自己找到解决方案非常简单:

  1. 为&#34; NewClass&#34;提供ID在&#34; Python&#34;:

    <Python>:
        BoxLayout: "vertical"
            Label:
                 id:label1
                 text: "Text 1"
            NewClass:
                 id: newclass
    
    <NewClass>:
        BoxLayout: "vertical"
            Label:
                id:label2
                text: "Text 2"
    
  2. 然后在.py方面你需要调用引用newclass: self.newclassid = self.ids["newclass"]

    然后链接标签ID:

    self.newclasslabel = self.newclassid.ids["label2"]
    

    最后改变文字:

    self.newclasslabel.text = "New Label 2"