Primeiros passos com TKInter — Interface Gráfica para Python
Neste post vamos aprender um pouco sobre a interface gráfica mais clássica e simples do Python: TKinter. Ela permite que consigamos criar caixas de diálogos simples para uma interação mais amigável com o usuário. Tenho o interesse de utilizar ela para uma aplicação que estou criando em Python e em seguida exportando para um executável do Windows.
Instalação
TKInter é um pacote nativo do Python. Portanto, não há nenhuma exigência de instalação além do próprio Python. De qualquer forma, a documentação sugere alguns passos para confirmar se o módulo está instalado corretamente. Primeiramente eles pedem para conferir se _tkinter
pode ser importado:
>>> import _tkinter
No meu caso funcionou corretamente. Caso falhe em seu caso, acesse o link da documentação e siga as sugestões dadas. Em seguida eles pedem para conferir se uma das seguintes importações funcionam:
>>> import Tkinter # no underscore, uppercase 'T' for versions prior to V3.0>>> import tkinter # no underscore, lowercase 't' for V3.0 and later
Para o meu caso funcionou o segundo (import tkinter
) o que indica que tenho uma versão instalada superior à 3.0 (o que é algo bom). Por fim, eles pedem para testar se Tkinter funciona através de um dos seguintes métodos:
>>> Tkinter._test() # note underscore in _test and uppercase 'T' for versions prior to V3.0>>> tkinter._test() # note underscore in _test and lowercase 'T' for V3.0 and later
No meu caso a segunda opção funcionou e apareceu a seguinte caixa de diálogo:
Portanto, tudo está funcionando corretamente em minha máquina. Caso a sua apresente algum problema, confira as sugestões da documentação.
Olá TKinter
Vamos agora criar uma versão de “Olá Mundo” do TKinter. Abra um editor de texto e teste o seguinte:
from tkinter import *
window = Tk()text = Label(window, text="Olá, mundo!")
text.grid()
window.mainloop()
Durante a execução, a seguinte caixa de diálogo aparecerá:
Acrescentando Caixas de Entrada
Vamos agora acrescentar um botão à nossa caixa de diálogo para entrada de textos. Segue um exemplo:
from tkinter import *
window = Tk()text = Label(window, text="Qual é o seu nome?")
text.grid()# Create a text entry box
textentry = Entry(window)
textentry.grid()window.mainloop()
Acrescentando Caixas de Saída
from tkinter import *
window = Tk()text = Label(window, text="Qual é o seu nome?")
text.grid()# Create a text entry box
textentry = Entry(window)
textentry.grid()# Caixa de saída
output = Text(window)
output.grid()window.mainloop()
Acrescentando Botões
Vamos agora criar um botão para comprimentar o usuário. Primeiramente precisamos definir uma função com a ação a ser tomada com o clique do botão que gostaríamos de criar:
def clicar():
nome = textentry.get()
output.delete(0.0, END)
output.insert(END, "Olá "+nome)
Em seguida
# Add a submit button
botao = Button(window, text="Comprimentar", command=click)
botao.grid()
Juntando os dois, ficará assim:
from tkinter import *def clicar():
nome = textentry.get()
output.delete(0.0, END)
output.insert(END, "Oi "+nome)window = Tk()
text = Label(window, text="Qual é o seu nome?")
text.grid()# Adicionar botao para comprimentar
botao = Button(window, text="Comprimentar", command=clicar)
botao.grid()# Create a text entry box
textentry = Entry(window)
textentry.grid()# Caixa de saída
output = Text(window)
output.grid()window.mainloop()
Personalizando dimensões
Como podem ter percebido, o método grid é chamado após cada elemento. Este método permite que você personalize elementos gráficos como posições de cada botão e por aí vai. Segue um exemplo:
from tkinter import *def clicar():
nome = textentry.get()
output.delete(0.0, END)
output.insert(END, "Oi "+nome)window = Tk()
window.title("Comprimentador")text = Label(window, text="Qual é o seu nome?")
text.grid(row=1, column=0, sticky=W)# Adicionar botao para comprimentar
botao = Button(window, text="Comprimentar", command=clicar)
botao.grid(row=3, column=0, sticky=W)# Create a text entry box
textentry = Entry(window)
textentry.grid(row=2, column=0, sticky=W)# Caixa de saída
output = Text(window)
output.grid(row=5, column=0, columnspan=2, sticky=W)window.mainloop()
Conclusão
Neste post nós demos os primeiros passos com a interface gráfica mais clássica e simples do Python: TKinter. Nós evoluímos uma aplicação simples para uma mini aplicação com botões e interação com o usuário.