如何从.kv文件添加.py文件中制作的Kivy下拉菜单



我希望在特定屏幕中有一个按钮,该按钮将打开该按钮下方的下拉菜单。当我在.kv文件中构建下拉菜单时,我就可以使用它了,但问题是,我需要使用我在.py文件中创建的列表中的项目来构建菜单。当我试图在.kv文件中引用该列表时,它会给我一个错误,说该列表没有定义。因此,我在.py文件中构建了下拉列表,然后在屏幕的类中添加了一个返回菜单的函数,并将该函数放在.kv文件中的按钮中。问题是,当我按下按钮时,什么也没发生。有人知道如何展示菜单吗?

.py:

...
drop = DropDown()
for i in range(1, len(exercises)):
btn = Button(text=exercises[i][0], size_hint_y= None, size=(50,50))
drop.add_widget(btn)
...
class AddExerciseScreen(Screen):
def show_object(self):
return drop
class LightweightApp(App):
def build(self):
# Create the screen manager
sm = ScreenManager()
sm.add_widget(HomeScreen(name='home'))
sm.add_widget(TimerScreen(name='timerscreen'))
sm.add_widget(AddExerciseScreen(name='addexercise'))

return sm
if __name__ == '__main__':
LightweightApp().run()

.kv:

...
<AddExerciseScreen>:
Button:
text: "Menu"
size_hint: None, None
size: root.width* 0.2, root.height*0.05
pos: root.width*0.5, root.height*0.95
on_release: root.show_object()
...

提前感谢!

尝试替换:

def show_object(self):
return drop

带有:

def show_object(self):
drop.open()

最新更新