Python Kivy小部件ID在_init中访问__
我在kv文件中定义了一个简单的自定义小部件: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__(
<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)