Kivy Widget ids访问__init__

时间:2016-03-26 01:22:32

标签: python kivy

我在kv文件中定义了一个简单的自定义窗口小部件:

<CustomWidget>:
    TextInput:
        id: text_input

实施它的课程:

class CustomWidget(BoxLayout):
    def __init__(self, *args, **kwargs):
        super(CustomWidget, self).__init__(*args, **kwargs)
        self.ids['text_input'].bind(insert_text=numeric_filter)

此代码失败,因为在我尝试使用它时未填充self.ids。是否有kivy.uix.Widget的回调或功能,我可以覆盖它以首次设置我的小部件?

1 个答案:

答案 0 :(得分:2)

您可以使用Clock.schedule_once(..., 0)来安排对依赖ids构建的函数的调用:

class CustomWidget(BoxLayout):
    def __init__(self, *args, **kwargs):
        super(CustomWidget, self).__init__(*args, **kwargs)
        Clock.schedule_once(self.init_ui, 0)
    def init_ui(self, dt=0):
        self.ids['text_input'].bind(insert_text=numeric_filter)