我在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
的回调或功能,我可以覆盖它以首次设置我的小部件?
答案 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)