Primeiros passos com TKInter — Interface Gráfica para Python

Fernando Marcos Wittmann
4 min readJul 24, 2021

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.

--

--

Fernando Marcos Wittmann

Head of Data Science @ Awari | Machine Learning Expert | E-Learning