我希望能够在kv文件和python代码中使用我的自定义(python编写的)小部件。我不知道如何创建一个小部件,然后在我选择的布局中使用它
class SelectableList(FocusBehavior, CompoundSelectionBehavior, StackLayout):
previous_nodes=[]
# this class has a whole bunch of "def's" that I got rid of so that stack would let me post a shorter question
class myScreen(Screen):
def build(self):
self.root_boi = StackLayout(size=(1,1))
stack = SelectableList(touch_multiselect=True,
multiselect=True)
for i in range(0, 6):
stack.add_widget(Button(size_hint_y=None, height=30, text="Button {0}".format(i)))
self.root_boi.add_widget(stack)
return self.root_boi
class TestApp(App):
def build(self):
sm = ScreenManager()
sm.add_widget(myScreen(name='whatever you want it to be...'))
return myScreen()
TestApp().run()
我不确定我到底做错了什么。我正在尝试将“SelectableList”小部件添加到堆栈布局中。我希望能够将它添加到我选择的任何小部件中,无论是在kv文件中还是在我的python代码中。如果这有道理的话
我怀疑
myScreen
的build()
方法实际上应该是一个__init__()
方法(没有返回)。我添加了self.add_widget(self.root_boi)
来代替return
。类名应该大写(MyScreen
),因为kv
语言有时会对这一点很挑剔下面是代码的修改版本,演示如何使用自定义小部件:
MyScreen
的__init__()
方法必须包含对super
{上面代码中的
kv
字符串显示了自定义小部件的两种不同用法。第一个(注释掉)使用MyScreen
自定义小部件。第二个(未注释掉)使用SelectableList
自定义小部件相关问题 更多 >
编程相关推荐