很抱歉,如果图像是巨大的访问儿童IDS的孩子KIvy
确定。所以here's my complete code。它是中等大小的,所以它仅供参考 - 不需要理解代码。因此,如果我想访问Python中Layout中的Button(),Label()或TextInput()对象,我只需要执行self.ids.object_name.property_of_object即可。
但是,假设我有一个ScreenManager(),该ScreenManager()中的Screen()以及该屏幕对象内的自定义布局MyCustomLayout()。就我所能得到的结果而言 - 我无法从Screen()的Python代码中获取MyCustomLayout()中的id。
I.e.假设在MyCustomLayout()中有一个按钮my_button的id。我想改变文字。
如果我是类MyCustomLayout()下,这将工作:
self.ids.my_button.text = 'My new text!'
但是,假设我在自选画面(),它保存MyCustomLayout()。我一直没能得到:
self.ids.my_button.text doesn't work
self.ids.my_custom_layout.my_button.text doesn't work
事实上,self.ids返回{}。由于某种原因,它甚至没有填充ObservableDict。
但是,无论如何。我想我说的是这个。如果我要访问自定义窗口小部件的孩子:
- 在一个屏幕对象
- 在Python
- 在自选画面()类
我会怎么做呢?
谢谢!
额外的信用:告诉我你是如何学到这些的!
啊,我很高兴你这样回答。给我一个机会来更具体地说明我在询问什么。让我们拿你的代码,但修改BoxLayout的一部分,就像这样 - Gist:https://gist.github.com/Crowbrammer/d78ea1a3491db095021bbabc4744b99b –
因为,在Screens中实例化一个自定义类会产生一个'mybutton'的KeyError。如果我拿出第40-41行,我得到一个AttributeError - 'MyCustomLayout1'没有属性'manager'(它没有)。所以,问题是,我们如何使这个新代码 - 使用自定义类 - 像您的原始代码一样工作? –
@crowbar编程啊:)我会看看 – EL3PHANTEN