CryptoWatch -Kivy          1 .13 Kivy                       2 .0 .0 Kivy -Garden               0 .1 .4 kivy -garden.wordcloud     1 .0 .0 kivymd                     0 .104 .2 .dev0 
Quick Review 
├── bin
│   └── KarobbenTB-1.3-armeabi-v7a-debug.apk
├── buildozer.spec
├── favicon.ico
├── font
│   ├── FangZhengHeiTiFanTi-1.ttf
│   ├── HuaKangXinZhuanTi-1.ttc
│   ├── HuaKangXinZhuanTi-1.ttf
│   └── JingDianFanJiaoZhuan-1.ttf
├── Layout
│   ├── filechooser.kv
│   ├── Navigation_Draw.kv
│   ├── Navigation_Tabs.kv
│   └── Seq.kv
├── lib
│   └── bio_seq.py
├── libWidget
│   ├── filechooser.py
│   ├── menu.py
│   └── Seq.py
├── logo.png
└── main.py
 
Example 
Document: HeaTTheatR, GitHub Issues 
This example is for another KVmd version  = =
from  kivy.lang import  Builderfrom  kivymd.app import  MDAppfrom  kivymd.uix.menu import  MDDropdownMenu''' Screen:     MDRaisedButton:         id: button         text: "PRESS ME"         pos_hint: {"center_x": .5, "center_y": .5}         on_release: app.menu.open() ''' class  Test (MDApp ):def  __init__ (self, **kwargs ):super ().__init__(**kwargs)"text" : f"Item {i} " } for  i in  range (5 )]4 ,def  menu_callback (self, instance_menu, instance_menu_item ):def  build (self ):return  self.screen
Example from document 
This is for version 0.104.2.dev0
Installed by pip install https://github.com/kivymd/KivyMD/archive/master.zip
from  kivy.lang import  Builderfrom  kivy.metrics import  dpfrom  kivy.properties import  StringPropertyfrom  kivymd.uix.list  import  OneLineIconListItemfrom  kivymd.app import  MDAppfrom  kivymd.uix.menu import  MDDropdownMenu''' <IconListItem>     IconLeftWidget:         icon: root.icon MDScreen     MDTextField:         id: field         pos_hint: {'center_x': .5, 'center_y': .6}         size_hint_x: None         width: "200dp"         hint_text: "Password"         on_focus: if self.focus: app.menu.open() ''' class  IconListItem (OneLineIconListItem ):class  Test (MDApp ):def  __init__ (self, **kwargs ):super ().__init__(**kwargs)"viewclass" : "IconListItem" ,"icon" : "git" ,"height" : dp(56 ),"text" : f"Item {i} " ,"on_release" : lambda  x=f"Item {i} " : self.set_item(x),for  i in  range (5 )]"bottom" ,4 ,def  set_item (self, text__item ):def  build (self ):return  self.screen
touch libWidget/menu.py
menu.py
from  kivymd.uix.menu import  MDDropdownMenufrom  kivymd.uix.floatlayout import  MDFloatLayout''' Screen:     MDRaisedButton:         id: button         text: "PRESS ME"         pos_hint: {"center_x": .5, "center_y": .5}         on_release: app.menu.open() ''' class  Menu (MDFloatLayout ):def  __init__ (self, **kwargs ):"text" : f"Item {i} " ,"viewclass" : "OneLineListItem" ,'font_name' : "./font/FangZhengHeiTiJianTi-1" ,"on_release" : lambda  x=f"Item {i} " : self.menu_callback(x)} for  i in  range (4 )]None ,4 ,123 )def  menu_callback (self,  instance_menu_item ):"instance_menu" , instance_menu_item)"Change Page" def  page_callback (self ):"Change Page" def  pop (self ):open ()
Insert to page:
from kivy.uix.screenmanager import Screen+   Seq_Menu = Seq_Menu() +       self.Button.on_release = self.Seq_Menu.pop +       self.Seq_Menu.menu.caller = self.Button +       self.Seq_Menu.menu.bind(on_release = self.menu_callback) + +       for i in range(len(self.Seq_Menu.menu.items)): +           self.Seq_Menu.menu.items[i]['text'] = "A" + str(i) +           self.Seq_Menu.menu.items[i]['on_release'] = lambda x=str(i)+": test": self.menu_callback(x) +       def menu_callback(self, Text): +           print(123, Text) +           self.Button.text = "Choosed: "+Text +           self.Seq_Menu.menu.dismiss() 
After imported the widget, we should bind the pop and the menu.bind. pop is for popup the widget bubble menu.bind is for showing the MenuItems. You also need to bind the bottom wiht self.Seq_Menu.menu.caller = self.Button if the button is in ‘kv’ file, them, bind its id.
GitHub Repository: Karobben Toolbox Karobben Toolbox