Python Kivy小部件ID在_init中访问__

Python Kivy小部件ID在_init中访问__,python,kivy,Python,Kivy,我在kv文件中定义了一个简单的自定义小部件: <CustomWidget>: TextInput: id: text_input 此代码失败,因为在我尝试使用它时,self.ids未填充。是否有kivy.uix.Widget的一些回调或函数,我可以覆盖这些回调或函数来执行首次设置我的Widget?您可以使用这些回调或函数来调度对函数的调用,这依赖于已构建的ID: class CustomWidget(BoxLayout): def __init__(

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

<CustomWidget>:
    TextInput:
        id: text_input
此代码失败,因为在我尝试使用它时,
self.ids
未填充。是否有
kivy.uix.Widget
的一些回调或函数,我可以覆盖这些回调或函数来执行首次设置我的Widget?

您可以使用这些回调或函数来调度对函数的调用,这依赖于已构建的
ID

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)

好的,这似乎是最好的选择。这里也有人提出了同样的问题@DikobrAz,事实上我认为这个问题是@zeeMokeez的翻版,对吧,但这个问题太长了。。。我在寻找我的问题时没有找到它。让社区或主持人决定是否删除这个问题。@DikobrAz实际上我认为这个问题更好(更简洁)。所以我不认为应该删除它。
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)