[Python] Alterar tela pelo arquivo python em kivy

Discussão em 'Python' iniciado por Stack, Outubro 23, 2024.

  1. Stack

    Stack Membro Participativo

    Preciso alterar a tela dentro do arquivo .py, não consigo fazer isso pelo .kv pois tenho que usar o ButtonBehavior e ele não funciona no .kv.

    from kivy.app import App
    from kivy.uix.boxlayout import BoxLayout
    from kivy.uix.button import ButtonBehavior
    from kivy.uix.image import Image, AsyncImage
    from kivy.uix.screenmanager import ScreenManager, Screen

    import json
    import requests


    class TelaInicio(Screen):
    pass


    class TelaLigas(Screen):
    def on_enter(self, *args):
    url = requests.get('http://127.0.0.1:8000/api/ligas')
    res = json.loads(url.text)
    for i in res:
    self.ids.ligas.add_widget(ListaLigas(ligas=i['imagem']))


    class TelaTorneios(Screen):
    pass


    class ListaLigas(BoxLayout, ButtonBehavior, Image):
    def __init__(self, ligas, manager=None, **kwargs):
    super(ListaLigas, self).__init__(**kwargs)
    self.manager = manager
    self.l = str(ligas)
    self.add_widget(AsyncImage(source=self.l))

    def on_press(self):
    print('ok')
    self.manager.troca_tela_torneios()


    class Manager(ScreenManager):
    def __init__(self, **kwargs):
    super(Manager, self).__init__(**kwargs)
    self.lista_ligas = ListaLigas(self)

    def troca_tela_torneios(self):
    self.current = 'tela_torneios'

    def troca_tela_ligas(self):
    self.current = 'tela_ligas'

    def troca_tela_inicio(self):
    self.current = 'tela_inicio'


    class Main(App):
    def build(self):
    return Manager()


    if __name__ == '__main__':
    Main().run()


    O erro:


    File "/home/marcelo/PycharmProjects/EAnimaApp/main.py", line 36, in on_press self.manager.troca_tela_torneios() AttributeError: 'NoneType' object has no attribute 'troca_tela_torneios'
    ​

    Continue reading...

Compartilhe esta Página