Neste tutorial, vamos aprender como criar um aplicativo em Python usando o framework Kivy para múltiplas telas usando o ScreenManager.
O ScreenManager é um gerenciador de telas fornecido pelo Kivy que nos permite alternar entre diferentes telas em nosso aplicativo de forma suave e eficiente. Ele nos ajuda a organizar diferentes elementos de nossa interface de usuário em diferentes telas e a alternar entre elas facilmente.
Para começar, certifique-se de ter o Kivy instalado em seu ambiente Python. Você pode instalá-lo usando o pip com o seguinte comando:
pip install kivy
Agora, vamos começar criando nosso aplicativo Kivy e adicionando múltiplas telas usando o ScreenManager. Abra seu editor de texto ou IDE favorito e siga os passos abaixo:
Passo 1: Importar as bibliotecas necessárias
import kivy
from kivy.app import App
from kivy.uix.screenmanager import ScreenManager, Screen
Passo 2: Definir as classes das telas
Vamos criar duas classes de tela simples: TelaPrincipal e TelaSecundaria.
class TelaPrincipal(Screen):
pass
class TelaSecundaria(Screen):
pass
Passo 3: Definir o ScreenManager e adicionar as telas
Agora vamos criar a classe principal do nosso aplicativo que irá conter o ScreenManager e adicionar nossas telas a ele.
class MultiScreenApp(App):
def build(self):
sm = ScreenManager()
sm.add_widget(TelaPrincipal(name='tela_principal'))
sm.add_widget(TelaSecundaria(name='tela_secundaria'))
return sm
Passo 4: Executar o aplicativo
Por fim, vamos instanciar e executar nossa classe MultiScreenApp.
if __name__ == '__main__':
MultiScreenApp().run()
Agora, ao executar o aplicativo, você verá duas telas simples: a TelaPrincipal e a TelaSecundaria. Para alternar entre elas, você pode usar o método current
do ScreenManager, passando o nome da tela desejada.
Por exemplo, para alternar para a TelaSecundaria a partir da TelaPrincipal, você pode fazer o seguinte:
sm.current = 'tela_secundaria'
Espero que este tutorial tenha sido útil para você aprender como criar múltiplas telas em um aplicativo Python usando o Kivy e o ScreenManager. Você pode expandir este exemplo adicionando mais telas e elementos de interface de usuário conforme necessário. Divirta-se codificando!
Oh Cabra arretado pra ensinar bem! Obrigado por compartilhar o conhecimento.
Muito boa aula, irmão!
Boa explicação, fácil aprendizado. Deus te abençoe sempre.
Parabéns! Muito didático! Você dá algum tipo de curso ou assessoria? Já sou programador Python, tendo 2 projetos desenvolvidos e agora estou aprendendo kivy como uma opção de GUI para Desktop. Tenho algumas dúvidas relacionadas a eventos (apertar Tab e ir para o próximo campo do formulário), como integrar a interface gráfica para começar o meu programa python, etc… Obrigado pela atenção. Aguardo seu retorno.
Muito Bom, Realmente você faz a diferença explicando com detalhes as funcionalidades e tratativas entre métodos, eventos e interação de telas no kivy, PARABENS!
Como sempre, muito bem explicado.
Como vc tinha mencionado em aulas passadas, "referência" é tudo no Kivy.
Não assisti as aulas segintes ainda, mas usando as referências, consegui criar um botão para votar para o Menu (é como eu chamo a primeira tela.)
Fantástico.
Obrigado pelos vÃdeos!!!
mano, mas esse gerenciador carrega tudo de uma só vez, fica pesadao se for mais de 5 classes, como muda isso??
MANO EU TE AMO PUTA MERDA TAVA HA mAIS DE DUAS HORAS TENTANDO ARRUMAR ESSE NEGOCIO E VC ME EXPLICOUI EM 10 MIN SEU LINDO <3
A app que quero desenvolver é beeeemmmmmm simples, e eu quero desenvolver o mais rápido possÃvel, com rescursos visuais. Acho o Kivy muito ruim nesse aspecto, a gente tem de ficar escrevendo o código do widget e rodar para ver o resultado. Esse framework é um excelente esforço, mas tem um caminho bem longo para frente. Em termos de produtividade esse desenvolvimento aà é um atraso, a gente digita num terminal e roda para ver o resultado, sem falar dos erros que o kivy retorna. Não acho uma boa, vou para o Ionic mesmo pq quero rapidez.
Não consegui achar os arquivos de código para download no site: @t
Seu curso é ótimo mano. Pra ficar perfeito só falta vc sugerir alguns exercÃcios no final de cada vÃdeo.
O meu so apareçe uma tela preta
Muito bom Professor, show de bola, uma dúvida como farÃamos se quiséssemos voltar a tela anterior, a tela de 'ver tarefas'.
Ótimo vÃdeo, como sempre. Me tire uma dúvida, por gentileza: e ao referenciar um objeto a partir do código Python (não do código Kivy como vc demonstrou)? Como devemos fazer? Depois de transformar minha classe Login de BoxLayout para Screen (dei a ela o nome TelaLogin), não consigo mais referenciar o objeto login por meio do ids, pois gera o erro "TypeError: 'kivy.properties.ListProperty' object is not iterable":
class Login(Screen):
def __init__(self, **kwargs):
super(Login, self).__init__(**kwargs)
Gerenciador.get_screen(Gerenciador, "TelaLogin").ids.login.bind(text = self.verificartamanhologin, focus = self.focuslogin)
Gerenciador.get_screen(Gerenciador, "TelaLogin").ids.senha.bind(text = self.verificartamanhosenha)
Já experimentei de tudo, e sempre gera um erro distinto. Tem alguma dica? Grato.
Boa noite
Eu criei um gerenciador para SCREEN LOGIN e uma SCREEN APP, só que dentro dessa SCREEN APP eu criei um outro gerenciador para as screens referentes aos itens do menu e eu gostaria de dar um print de um item de TextInput das subSCREENS e não estou conseguindo. Tem como?
Explicação sensacional…quanto mais eu avanço mais complicado fica
Muito bom Will, tks tks!!
Wiil, e se eu não quiser criar telas. Se eu quiser usar uma unica tela e ao clicar em algum botão/função uma area reservada no layout alterar de acordo o opção clicada.
Você sabe como colocar gráficos utilizando o matplotlib e considerando mais de uma tela (screen)?
Por exemplo, tela 01 com botão e tela 02 com o gráfico.
Boa noite Wills, seguindo oq já tinha sido aprendido fiz uma estrutura da seguinte forma:
[menu( que sai ou vai para a opção ->) seleção de tarefas ( que ao inves de labels, tem botões que faz uma seleção de tarefas desses botões ->) seleção de labels com as tarefas realizadas da função:
Exemplo PC da xuxa -> (tarefas feitas) [aberto, revisado hd, memorias ok, fonte ok, curto identificado entre conector de carga e pwm]
O problema é que se eu crio outra tarefa ( E do jeito que você passou, a gente cria uma nova instancia de Tarefa ) aparece as tarefas desse PC da xuxa, e se eu deletar nessa nova instancia, é deletado na instancia anterior, tem como ajudar nessa questão?Obrigado e ótimas aulas!