Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何从Kivy中的另一个小部件访问某些小部件属性?_Python_Kivy_Kivy Language - Fatal编程技术网

Python 如何从Kivy中的另一个小部件访问某些小部件属性?

Python 如何从Kivy中的另一个小部件访问某些小部件属性?,python,kivy,kivy-language,Python,Kivy,Kivy Language,好的,假设我希望某个小部件中的标签使用另一个小部件中标签的文本: <SubWidget@RelativeLayout>: Label: text: str(root.parent.ids.first.text) <RootWidget>: Label: id: first center_x: 100 text: "text" SubWidget: id: secon

好的,假设我希望某个小部件中的标签使用另一个小部件中标签的文本:

<SubWidget@RelativeLayout>:
    Label:
        text: str(root.parent.ids.first.text)

<RootWidget>:
    Label:
        id: first
        center_x: 100
        text: "text"

    SubWidget:
        id: second
        center_x: 200
但这导致了例外情况:

AttributeError: 'NoneType' object has no attribute 'text'
这是令人困惑的,因为如果我编写类似于
text:str(root.parent.l)
的内容,我将看到
标签对象
,而不是
非类型

所以我有两个问题:

  • 为什么第二种解决方案不起作用?如何修复它
  • 一般来说,从另一个小部件访问某个小部件属性的最佳方式是什么?我可以使它独立于小部件层次结构吗
  • 对象属性
    l
    可能在第一次事件循环迭代之后填充,而您正试图在第一次循环中访问它。您可以将其延迟到第二次迭代以使其工作

  • 最强大的方法是从python代码内部绑定这些属性,但是有一些技巧可以使其更简单。这是我最喜欢的方法:

  • 盒子布局 标签 id:标签 文字:“你好,世界” 子部件 label\u text:label.text 标签文本:“无” 标签 text:root.label\u text
    AttributeError: 'NoneType' object has no attribute 'text'
    
    BoxLayout Label id: label text: 'hello world' SubWidget label_text: label.text <SubWidget@BoxLayout> label_text: 'none' Label text: root.label_text