Ir para conteúdo
Fórum Script Brasil
  • 0

Ajuda com Kivy


phvbrito

Pergunta

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

    




 

Link para o comentário
Compartilhar em outros sites

0 respostass a esta questão

Posts Recomendados

Até agora não há respostas para essa pergunta

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...