kivy

Criando uma Tela de Login com Senha usando Python e Kivy

O Kivy é uma das bibliotecas mais poderosas e acessíveis do Python para criar interfaces gráficas modernas e interativas. Neste tutorial, vamos mostrar como desenvolver uma tela de bloqueio com senha usando Python e Kivy, permitindo ao usuário desbloquear o acesso ao digitar a senha correta. Essa é uma excelente introdução ao desenvolvimento de aplicações gráficas e um ótimo primeiro passo para quem deseja criar apps desktop ou mobile com Python.

Você vai entender conceitos fundamentais como widgets (Label, Button e TextInput), organização de layout, gerenciamento de telas com ScreenManager e validação de dados digitados pelo usuário. Ideal para iniciantes que querem aprender Python de forma prática, criando sistemas reais como telas de login e autenticação.

Passo 1 – Instalando o Kivy

Antes de criar qualquer aplicativo com Kivy, é necessário instalar a biblioteca no seu ambiente Python.

Abra o terminal (ou prompt de comando) e execute:

				
					python --version

				
			

Se o Python estiver instalado, a versão será exibida. Caso contrário, instale o Python antes de continuar.

Com o Python instalado, execute o comando abaixo:

				
					pip install kivy

				
			

Explicação:

  • pip é o gerenciador de pacotes do Python.

  • Esse comando faz o download e instala o Kivy e suas dependências.

  • O processo pode levar alguns minutos, dependendo da sua conexão.

Passo 2 – Importando as bibliotecas do Kivy

Começamos importando os componentes básicos do Kivy para criar interfaces gráficas:

				
					from kivy.app import App
from kivy.uix.label import Label
from kivy.uix.button import Button
from kivy.uix.textinput import TextInput
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.screenmanager import ScreenManager, Screen

				
			

Explicação:

  • Label: mostrar textos

  • Button: botões clicáveis

  • TextInput: campo para digitar a senha

  • BoxLayout: organização dos elementos

  • Screen e ScreenManager: controle de telas

Passo 3– Criando a tela de bloqueio

Agora vamos criar a tela de login, onde o usuário digita a senha.

				
					class TelaLogin(Screen):
    def __init__(self, **kwargs):
        super().__init__(**kwargs)

        layout = BoxLayout(orientation="vertical", padding=20, spacing=10)

        self.mensagem = Label(text="Digite a senha para desbloquear")
        layout.add_widget(self.mensagem)

        self.campo_senha = TextInput(
            multiline=False,
            password=True
        )
        layout.add_widget(self.campo_senha)

        botao_ok = Button(text="Desbloquear")
        botao_ok.on_press = self.verificar_senha
        layout.add_widget(botao_ok)

        self.add_widget(layout)

				
			

Explicação:

  • class TelaLogin(Screen): cria uma nova tela do aplicativo.
    Essa tela será controlada pelo ScreenManager e será a primeira tela exibida ao usuário.

  • def __init__(self, **kwargs): é o construtor da tela.
    Ele é executado automaticamente quando a tela é criada.

  • super().__init__(**kwargs) inicializa corretamente a classe Screen, permitindo que o Kivy aplique configurações internas como o nome da tela e seu comportamento dentro do gerenciador de telas.

  • layout = BoxLayout(orientation="vertical", padding=20, spacing=10) cria um layout em coluna:

    • orientation="vertical" organiza os elementos de cima para baixo.

    • padding=20 cria uma margem interna entre a borda da tela e os widgets.

    • spacing=10 define o espaço entre cada elemento, deixando a interface mais organizada.

  • self.mensagem = Label(...) cria um texto informativo para o usuário, explicando o que deve ser feito na tela.

  • layout.add_widget(self.mensagem) adiciona esse texto ao layout.

  • TextInput(multiline=False, password=True) cria o campo onde o usuário digita a senha:

    • multiline=False impede que o usuário quebre linha.

    • password=True oculta os caracteres digitados, transformando o campo em um campo de senha.

  • botao_ok = Button(text="Desbloquear") cria um botão para confirmar a senha digitada.

  • botao_ok.on_press = self.verificar_senha conecta o clique do botão à função que valida a senha.

  • layout.add_widget(botao_ok) adiciona o botão ao layout.

  • self.add_widget(layout) adiciona todo o layout à tela, fazendo com que os elementos apareçam na interface.

Passo 4 – Criando a lógica de verificação da senha

Agora vamos ensinar o programa a verificar se a senha está correta.

				
					    def verificar_senha(self):
        senha_correta = "1234"

        if self.campo_senha.text == senha_correta:
            self.mensagem.text = "Acesso liberado!"
            self.manager.current = "desbloqueado"
        else:
            self.mensagem.text = "Senha incorreta!"
            self.campo_senha.text = ""

				
			

Explicação:

  • Comparamos o texto digitado com a senha correta

  • Se estiver certa → troca de tela

  • Se estiver errada → mostra erro e limpa o campo

Passo 5 – Criando a tela desbloqueada

Essa será a tela que aparece quando a senha estiver correta.

				
					class TelaDesbloqueada(Screen):
    def __init__(self, **kwargs):
        super().__init__(**kwargs)

        layout = BoxLayout(orientation="vertical")

        label = Label(
            text="Tela desbloqueada com sucesso!",
            font_size="24sp"
        )

        layout.add_widget(label)
        self.add_widget(layout)

				
			

Explicação:

  • class TelaDesbloqueada(Screen): cria uma nova tela do Kivy.
    Como ela herda de Screen, ela pode ser controlada pelo ScreenManager.

  • def __init__(self, **kwargs): é o construtor da tela.
    Ele roda assim que a tela é criada.

  • super().__init__(**kwargs) inicializa a tela corretamente, permitindo que o Kivy aplique configurações internas (como o name da tela e outras propriedades).

  • layout = BoxLayout(orientation="vertical") cria um layout vertical, ou seja, os elementos serão organizados um embaixo do outro.

  • label = Label(...) cria um texto na tela:

    • text="Tela desbloqueada com sucesso!" é a mensagem que o usuário verá após acertar a senha.

    • font_size="24sp" define o tamanho da fonte.
      No Kivy, sp é uma unidade pensada para manter o texto proporcional em diferentes resoluções.

  • layout.add_widget(label) adiciona o texto dentro do layout.

  • self.add_widget(layout) coloca o layout dentro da tela (ou seja, faz o layout aparecer de fato na interface).

Passo 6 – Criando o aplicativo principal

Agora conectamos tudo com o ScreenManager.

				
					class MeuApp(App):
    def build(self):
        sm = ScreenManager()

        sm.add_widget(TelaLogin(name="login"))
        sm.add_widget(TelaDesbloqueada(name="desbloqueado"))

        return sm

				
			

Explicação:

  • class MeuApp(App): cria a classe principal do aplicativo.
    Toda aplicação Kivy obrigatoriamente herda da classe App.

  • def build(self): é o método responsável por montar a interface inicial do aplicativo.
    Tudo o que for retornado por esse método será exibido na tela quando o app iniciar.

  • sm = ScreenManager() cria o gerenciador de telas do aplicativo.
    Ele permite alternar entre diferentes telas (Screen) sem fechar o app.

  • sm.add_widget(TelaLogin(name="login")) adiciona a tela de login ao gerenciador:

    • name="login" define o identificador da tela.

    • Esse nome será usado para trocar de tela, por exemplo: self.manager.current = "login"

       

  • sm.add_widget(TelaDesbloqueada(name="desbloqueado")) adiciona a tela que será exibida após a senha correta:

    • name="desbloqueado" é o nome usado para navegar até essa tela.

  • return sm retorna o ScreenManager, tornando-o a raiz da aplicação.
    A partir desse momento, o Kivy passa a controlar o app usando esse gerenciador.

Passo 7 – Executando o aplicativo

Agora vamos finalizar o projeto executando o aplicativo Kivy.

				
					if __name__ == "__main__":
    MeuApp().run()

				
			

Explicação:

  • if __name__ == "__main__": é uma estrutura padrão do Python que verifica como o arquivo está sendo executado.

  • MeuApp() cria uma instância da classe principal do aplicativo.

  • .run() inicia o aplicativo Kivy

Resultado Final

kivy
				
					from kivy.app import App
from kivy.uix.label import Label
from kivy.uix.button import Button
from kivy.uix.textinput import TextInput
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.screenmanager import ScreenManager, Screen


class TelaLogin(Screen):
    def __init__(self, **kwargs):
        super().__init__(**kwargs)

        layout = BoxLayout(orientation="vertical", padding=20, spacing=10)

        self.mensagem = Label(text="Digite a senha para desbloquear")
        layout.add_widget(self.mensagem)

        self.campo_senha = TextInput(multiline=False, password=True)
        layout.add_widget(self.campo_senha)

        botao_ok = Button(text="Desbloquear")
        botao_ok.on_press = self.verificar_senha
        layout.add_widget(botao_ok)

        self.add_widget(layout)

    def verificar_senha(self):
        senha_correta = "1234"

        if self.campo_senha.text == senha_correta:
            self.mensagem.text = "Acesso liberado!"
            self.manager.current = "desbloqueado"
        else:
            self.mensagem.text = "Senha incorreta!"
            self.campo_senha.text = ""


class TelaDesbloqueada(Screen):
    def __init__(self, **kwargs):
        super().__init__(**kwargs)

        layout = BoxLayout()
        layout.add_widget(Label(text="Tela desbloqueada com sucesso!", font_size="24sp"))
        self.add_widget(layout)


class MeuApp(App):
    def build(self):
        sm = ScreenManager()
        sm.add_widget(TelaLogin(name="login"))
        sm.add_widget(TelaDesbloqueada(name="desbloqueado"))
        return sm


if __name__ == "__main__":
    MeuApp().run()

				
			

Ao executar o código, você verá:

  • Uma tela de login exibida ao iniciar o aplicativo.

  • Um campo de senha, onde o usuário pode digitar os dados com os caracteres ocultos.

  • Um botão “Desbloquear” para confirmar a ação.

  • Ao digitar a senha correta, a aplicação troca para a tela desbloqueada com a mensagem de sucesso.

  • Ao digitar a senha incorreta, a mensagem “Senha incorreta!” é exibida e o campo de senha é limpo.

  • A navegação entre telas funcionando corretamente através do ScreenManager.

Caso o Python ainda não esteja instalado em seu dispositivo, clique no botão abaixo para realizar a instalação.

Posts Similares

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *