其实没有
根据文档,
name在您的窗口小部件中是一个变量,
id并且仅仅是窗口小部件引用
weakref。也许python文档会帮助您了解其工作原理。您要做的是打印
id,而不是小部件内的变量“
id”。
在kivy文档中,解释了在
kv解析之后,将id收集到ObservableDict中。该id就像python
dict键一样工作,
id:Widget但仅在通过dictionary(
ids)访问时才有效。我认为
kv解析器只是将所有ID放入字典中,并且只能与它创建的字典一起使用。
Button: id: test text: 'self.id'#orButton: id: 'test' text: 'self.id'
即使像字符串一样编写,也不会发生任何变化。因此,我希望解析器这样的表现:无论待价而沽整个字后
id:,转成字符串,追加到一个
ids字典
<id_string>:Widget_weakref,忘掉
id你的
.kv或只是忽略它,如果它的工作原理
.kv一次。因此,当直接调用id(而不是像字典一样的d
[key])时,它的行为就像一个空
None变量。我希望我是对的。
要回答第二个和第三个问题:
如果您的意思是直接通过
id来访问widget ,那么可以。
MyBox``SimpleLayout
python类:
self.ids.simple_layout
kv MyBox规则:
MyBox: id: screen_manager name: 'screen_manager' BoxLayout: Label: id: my_label text: 'test' Button: text: 'button' on_release: self.text = root.ids.my_label.text
但是,无法像python全局变量那样通过其id访问所有小部件,这是不可能的。您需要先访问class / widget,然后再访问其
ids字典



