Não consigo fazer esse menu DropDown funcionar de jeito algum, alguém poderia me ajudar mostrando o que fiz de errado?
este é o meu .py
#controle.py
from kivy.lang import Builder
from kivymd.app import MDApp
from kivymd.uix.boxlayout import MDBoxLayout
from kivy.uix.screenmanager import ScreenManager, Screen
from kivymd.uix.menu import MDDropdownMenu
from kivy.metrics import dp
from kivy.properties import StringProperty
from kivymd.uix.list import OneLineIconListItem
class IconListItem(OneLineIconListItem):
icon = StringProperty()
class MainTela(ScreenManager):
pass
class TelaLogin(Screen):
pass
class TelaMenu(Screen):
pass
class TelaConsulta(Screen):
def popup(self):
menu_items = [
{
"viewclass": "IconListItem",
"icon": "git",
"text": f"Item {i}",
"height": dp(56),
"on_release": lambda x=f"Item {i}": self.set_item(x),
} for i in range(5)
]
self.menu = MDDropdownMenu(
caller=self.TelaConsulta.ids.drop_item,
items=menu_items,
position="center",
width_mult=4,
)
menu_items = [
{
"viewclass": "IconListItem",
"icon": "git",
"text": f"Item {i}",
"height": dp(56),
"on_release": lambda x=f"Item {i}": self.set_item(x),
} for i in range(5)
]
self.menu.bind()
def set_item(self, text_item):
self.TelaConsulta.ids.drop_item.set_item(text_item)
self.menu.dismiss()
def build(self):
return self.TelaConsulta
class TelaCadastro(Screen):
pass
class Controle(MDApp):
pass
if __name__ == '__main__':
Controle().run()
este é o meu .kv
#controle.kv
MainTela:
TelaLogin:
TelaMenu:
TelaConsulta:
TelaCadastro:
name:'TelaCadastro'
<TelaLogin@FloatLayout>:
name: 'TelaLogin'
Image:
source: "logo.png"
allow_stretch: True
size_hint: 0.3, 0.3
pos_hint: {"center_x": 0.5, "center_y": 0.8}
MDTextField:
pos_hint: {"center_x": 0.5, "center_y": 0.6}
size_hint_x: 0.5
hint_text:"Digite o usuário"
MDTextField:
pos_hint: {"center_x": 0.5, "center_y": 0.5}
size_hint_x: 0.5
hint_text:"Digite a senha"
password: True
MDRoundFlatButton:
pos_hint: {"center_x": 0.5, "center_y": 0.4}
size_hint_x: 0.5
text:"Confirmar"
text_color:"gray"
on_release: app.root.current = 'TelaMenu'
MDLabel:
text: "By Phvbrito"
pos_hint: {"center_x": 0.9, "center_y": 0.05}
<TelaMenu@FloatLayout>:
name:'TelaMenu'
MDTopAppBar:
title: 'Controle'
pos_hint: {'center_x': 0.5, 'center_y': 0.9}
left_action_items: [['menu', lambda x: app.stop()]]
right_action_items: [['logout', lambda x: app.stop()]]
MDRaisedButton:
font_size: 25
text: "Consulta"
md_bg_color: "red"
size_hint: (.3, .3)
pos_hint: {"center_x": 0.3, "center_y": 0.6}
on_release: app.root.current = 'TelaConsulta'
MDRaisedButton:
font_size: 25
text: "Cadastro"
md_bg_color: "red"
size_hint: (.3, .3)
pos_hint: {"center_x": 0.7, "center_y": 0.6}
on_release: app.root.current = 'TelaCadastro'
MDRaisedButton:
font_size: 25
text: "Sair"
md_bg_color: "red"
size_hint: (.3, .3)
pos_hint: {"center_x": 0.5, "center_y": 0.2}
on_release: app.stop()
<TelaCadastro@FloatLayout>:
name:'TelaCadastro'
MDTopAppBar:
title: 'Cadastro'
pos_hint: {'center_x': 0.5, 'center_y': 0.9}
left_action_items: [['menu', lambda x: app.stop()]]
right_action_items: [['logout', lambda x: app.stop()]]
MDTopAppBar:
pos_hint: {'center_x': 0.5, 'center_y': 0.05}
left_action_items: [['arrow-left', lambda x: setattr(root.manager, 'current', 'TelaMenu')]]
MDRaisedButton:
font_size: 25
text: "Piso"
md_bg_color: "red"
size_hint: (.3, .3)
pos_hint: {"center_x": 0.3, "center_y": 0.65 }
MDRaisedButton:
font_size: 25
text: "Vinilico"
md_bg_color: "red"
size_hint: (.3, .3)
pos_hint: {"center_x": 0.7, "center_y": 0.65 }
MDRaisedButton:
font_size: 25
text: "Rejuntes"
md_bg_color: "red"
size_hint: (.3, .3)
pos_hint: {"center_x": 0.3, "center_y": 0.3 }
MDRaisedButton:
font_size: 25
text: "Rodapé"
md_bg_color: "red"
size_hint: (.3, .3)
pos_hint: {"center_x": 0.7, "center_y": 0.3 }
<TelaConsulta@FloatLayout>
name: 'TelaConsulta'
MDTopAppBar:
title: 'Controle'
pos_hint: {'center_x': 0.5, 'center_y': 0.9}
left_action_items: [['menu', lambda x: app.stop()]]
right_action_items: [['logout', lambda x: app.stop()]]
MDScreen:
MDDropDownItem:
id: drop_item
pos_hint: {'center_x': .5, 'center_y': .5}
text: 'Item 0'
on_release: app.menu.open()
<IconListItem>
IconLeftWidget:
icon: root.icon