如何确保.kv文件已完全加载(on_parent无法解决此问题)

时间:2018-10-16 15:07:30

标签: python kivy benchmarking

我正在尝试构建一个模块化的应用程序,因此,我正在动态加载新的.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)存在?

预先感谢

0 个答案:

没有答案