我正在尝试构建一个模块化的应用程序,因此,我正在动态加载新的.kv文件:
def load_centralWidget(self, name):
filename = name + '.kv'
pathToFile = Path('kv/'+filename)
if pathToFile.is_file():
self.root.container.clear_widgets()
filename = Builder.load_file('kv/' + filename)
self.root.container.add_widget(filename)
else:
log.debug('File ' + filename + ' does not yet exist!')
现在,我尝试从文本文件中加载一些信息并将其填充到Label中:
在.kv文件中:
CentralWidget:
BoxLayout:
id: outerBox
orientation: 'vertical'
size: self.size
canvas.before:
Rectangle:
pos: self.pos
size: self.size
on_parent:
app.loadRunAdjustments("findMe")
Label:
id: findMe
在.py文件中:
def loadRunAdjustments(self, lbl_id):
textInput = self.root.container.children[0].ids[lbl_id]
#doing some file loading stuff here
textInput = #loaded string from file
(代码被缩短了,但是我想我得到了所有有趣的词句)
如果我尝试运行该代码,则会收到“ IndexError:列表索引超出范围”-错误。调试代码告诉我,子代是一个空的List。我经常在以后使用此功能。然后一切正常。所以我认为这里的问题是,当调用on_parent时,加载的文件没有完全加载。
是否有一个选项/事件/其他东西可以绝对确保所有内容都已加载并且子代(及其ID)存在?
预先感谢