Вам необходимо включить caller
в ваш вызов MDDropdownMenu()
, и ожидается, что items
будет списком словарей.
Попробуйте изменить свой kv
, чтобы включить id
для MDRectangleFlatIconButton
:
<HomeScreen>:
GridLayout:
cols: 1
padding: 20, 20
spacing: 10,10
size_hint: 1,0.87
MDRectangleFlatIconButton:
id: caller # ADDED
icon: 'weight-kilogram'
text: "Package weight"
size_hint: (0.55,1)
on_press: root.drop()
id
используется для идентификации caller
.
Затем создайте DropDown
в методе on_kv_post()
, а drop()
метод просто открывает DropDown
:
class HomeScreen(Screen):
def on_kv_post(self, base_widget):
caller = self.ids.caller
self.dropdown = MDDropdownMenu(caller=caller, items=[{"viewclass": "MDMenuItem", "text": "option1"}], width_mult=4)
def drop(self):
self.dropdown.open()
Метод on_kv_post()
выполняется после выполнения правил kv
, так что доступны ids
.
MDDropdownMenu
не создается методом drop()
, как рекомендовано в документации .