【发布时间】:2021-02-08 13:50:07
【问题描述】:
我正在 Kivy/KivyMD 中开发我的第一个应用程序,但遇到了以下问题:
我已经使用 buildozer 构建了我的应用程序,当我在我的 android 手机上打开它时,MDDropDownItem 会正确打开,但是当我点击它时不会设置新项目(甚至关闭)。它在我的桌面上运行正常。
相关代码(main.py):
def __init__(self, **kwargs):
super().__init__(**kwargs)
self.screen = Builder.load_string('''
<ContentNavigationDrawer>:
orientation: 'vertical'
padding: "8dp"
spacing: "8dp"
ScrollView:
MDList:
OneLineListItem:
text: 'Post Mortem Interval'
on_press:
root.nav_drawer.set_state('close')
root.screen_manager.current = 'Post Mortem Interval'
Screen:
BoxLayout:
orientation: 'vertical'
MDToolbar:
id: toolbar
pos_hint: {'top': 1}
elevation: 10
title: screen_manager.current
left_action_items: [['menu', lambda x: nav_drawer.set_state('open')]]
NavigationLayout:
x: toolbar.height
ScreenManager:
id: screen_manager
Screen:
name: 'Post Mortem Interval'
MDBottomNavigation:
MDBottomNavigationItem:
name: 'pmi'
MDTabs:
id: tabs
Tab:
text: 'Calculate'
MDDropDownItem:
id: drop_item_cover
pos_hint: {'center_x': .5, 'center_y': .57}
text: 'cover'
on_release: app.menu_cover.open()
MDDropDownItem:
id: drop_item_surFact
pos_hint: {'center_x': .5, 'center_y': .47}
text: 'factors'
on_release: app.menu_surFact.open()
''')
menu_items_cover = [{"text": "Naked"},
{"text": "OneToTwoThicker"},
{"text": "OneToTwoThin"},
{"text": "TwoToThree"},
{"text": "ThreeToFour"},
{"text": "MoreLayers"},
{"text": "BedspreadLight"},
{"text": "BedspreadFully"},
]
self.menu_cover = MDDropdownMenu(caller=self.screen.ids.drop_item_cover, items=menu_items_cover, position="center", width_mult=4)
self.menu_cover.bind(on_release=self.set_item_cover)
menu_items_surFact = [{"text": "StillAirBodyDry"},
{"text": "MovingAirBodyDry"},
{"text": "StillAirBodySoaked"},
{"text": "MovingAirBodySoaked"},
{"text": "StillWater"},
{"text": "FlowingWater"},
]
self.menu_surFact = MDDropdownMenu(caller=self.screen.ids.drop_item_surFact, items=menu_items_surFact, position="center", width_mult=7)
self.menu_surFact.bind(on_release=self.set_item_surFact)
def set_item_cover(self, instance_menu, instance_menu_item):
self.screen.ids.drop_item_cover.set_item(instance_menu_item.text)
self.menu_cover.dismiss()
self.cover = instance_menu_item.text #Retrieve the user input
return self.cover #Retrieve the user input
def set_item_surFact(self, instance_menu, instance_menu_item):
self.screen.ids.drop_item_surFact.set_item(instance_menu_item.text)
self.menu_surFact.dismiss()
self.surFact = instance_menu_item.text #Retrieve the user input
return self.surFact #Retrieve the user input
【问题讨论】:
标签: python android kivy kivymd