- Download: Apostila Python Progressivo
Recebendo informações do usuário
Até o momento, nossa única interação código-usuário foi através do clique do usuário em botões, seja em nossos buttons como em caixas de diálogo.
Porém, a forma mais comum de interação entre um programa e o usuário, é através daquelas áreas retangulares, onde escrevemos algum texto.
Por exemplo, para preencher o campo de nome, telefone, CEP, data de nascimento etc.
Geralmente, o normal é termos algo do tipo:
- Um label com algum texto
- Um campo de entrada, para escrevermos algo
- Um botão, para fazer algo com o dado que escrevemos
Vejamos um print de uma aplicação real:
Como usar entradas: Entry widget
Vamos aprender como fazer o programinha do print anterior.
Na primeira janela, temos dois frames:
frame de cima: tem um label e um widget do tipo Entry
frame de baixo: dois botões
Após criar os objetos do tipo label e os frames, vamos criar nosso widget Entry.
- Ele recebe dois parâmetros:
- O container que ele vai estar (frame ou janela)
- width: número de caracteres que vai ser possível digitar no campo de texto
Vamos usar width=30
Em seguida, empacotamos o label e entry no frame de cima, lado a lado (side='left').
Nosso entry vai se chamar entrada e ele tem um método especial, o get(), que retorna uma string com o que foi digitado na caixa.
Em seguida, criamos dois botões.
O primeiro chama o método exibe(), onde esse método exibe uma string.
Por fim, um botão de quit.
Agora vamos empacotar esse botões no frame de baixo.
Depois empacotamos os dois frames na janela principal...e rodamos o programa!
Veja como fica o código completo:
from tkinter import * from tkinter import messagebox class MinhaGUI: def __init__(self): # Criamos a janela principal self.janela_principal = Tk() # Criando os frames self.frame_cima = Frame(self.janela_principal) self.frame_baixo = Frame(self.janela_principal) # Criando label e botões do frame de cima self.label = Label(self.frame_cima, text='Digite seu nome:') # Criando o widget de entrada self.entrada = Entry(self.frame_cima, width=30) # Empacotando label e entrada no frame de cima self.label.pack(side='left') self.entrada.pack(side='left') # Criando os botões, no frame de baixo self.botao = Button(self.frame_baixo, text='Exibir', command=self.exibe) self.botao_sair = Button(self.frame_baixo, text='Sair', command=self.janela_principal.quit) # Empacotando os botões no frame de baixo self.botao.pack(side='left') self.botao_sair.pack(side='left') # Empacotando os botões janela principal self.botao.pack() self.botao_sair.pack() # Empacotando os frames na janela principal self.frame_cima.pack() self.frame_baixo.pack() # Rodando mainloop() def exibe(self): messagebox.showinfo('Python Progressivo','Seu nome é: '+ self.entrada.get()) gui = MinhaGUI()
Ou seja, o pulo do gato dos widgets Entry é o método get() que todo objeto desse tipo tem.
Esse método retorna SEMPRE uma string, com o que foi digitado.
Quer pegar um número? Ok, mas primeiro converte de string pra inteiro ou float, só depois usa o número. Mas é sempre uma string, ok?
Este comentário foi removido por um administrador do blog.
ResponderExcluir