【问题标题】:Accessing multiple kivy Classes from one single Class within Python side从 Python 端的一个类访问多个 kivy 类
【发布时间】:2017-05-02 12:42:58
【问题描述】:

我在 python 中有两个类,在 Kivy 文件中的 2 个不同的类中有 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”)-希望这是可能的

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

【问题讨论】:

    标签: python kivy kivy-language


    【解决方案1】:

    好的,经过一夜好眠,我可以自己找到解决方案,这很容易:

    1. 给“Python”中的“NewClass”一个ID:

      <Python>:
          BoxLayout: "vertical"
              Label:
                   id:label1
                   text: "Text 1"
              NewClass:
                   id: newclass
      
      <NewClass>:
          BoxLayout: "vertical"
              Label:
                  id:label2
                  text: "Text 2"
      

    然后在 .py 方面你需要调用引用 newclass: self.newclassid = self.ids["newclass"]

    然后链接标签id:

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

    最后改一下文字:

    self.newclasslabel.text = "New Label 2"
    

    【讨论】:

    • 是的,问题是 NewClass 小部件不是 Python 的子小部件,因此在其 ids 中不存在。
    猜你喜欢
    • 2023-01-07
    • 2021-09-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-14
    • 1970-01-01
    • 2012-05-18
    • 1970-01-01
    相关资源
    最近更新 更多