我希望检索窗口小部件的ID,以便在根类的窗口外部中访问其text
属性。我理解为了影响或检索具有来自kv-lang的id的项目,可以使用以下语法:
self.ids.some_id.some_attribute = new_value
当在根类中使用时,这非常有效,因为它的所有子节点都可以访问。但是在窗口小部件类中,该类仅引用声明的窗口小部件,因此它之外的任何ID都超出了范围。
<Root>:
...
SomeButton:
...
TextInput:
id: some_id
什么不起作用:
class SomeButton(Button):
def on_press(self):
print(self.ids.some_id.text)
正如我所提到的,这是可以理解的。但我不知道在这种情况下使用了什么。任何帮助将不胜感激:)
答案 0 :(得分:0)
问题是ids是规则的本地,而不是小部件。
此处您的规则是为<Root>
声明的,因此要访问它,您必须使用对此窗口小部件的引用,而不是按钮。
如果您想将some_id的引用添加到按钮,可以在按钮中添加属性。
class SomeButton(Button):
target = ObjectProperty()
def on_press(self):
print self.target.text
并以kv。
将它们链接在一起<Root>:
...
SomeButton:
target: some_id
TextInput:
id: some_id
答案 1 :(得分:0)
我是kivy的新手,但我认为TextInput不是SomeButton的子窗口小部件,但你还是试图从Button访问它。这是你的问题。
尝试self.parent.ids.some_id.text