Aprenda Python: Criando uma Calculadora com Tkinter
O que é o Tkinter?
Tkinter é a biblioteca padrão do Python para criação de interfaces gráficas (GUI). Com ele, você pode criar janelas, botões e campos de entrada nativos do sistema operacional de forma simples e eficiente.
Projeto: Calculadora Completa
Vamos construir uma interface onde o usuário pode clicar nos números e operadores para realizar cálculos matemáticos reais utilizando o gerenciador de layout grid.
import tkinter as tk
def clicar(botao):
"""Adiciona o valor do botão ao campo de entrada."""
atual = entrada.get()
if atual == "Erro":
entrada.delete(0, tk.END)
entrada.insert(tk.END, str(botao))
def limpar():
"""Limpa o campo de entrada."""
entrada.delete(0, tk.END)
def calcular():
"""Avalia a expressão matemática no campo de entrada."""
try:
resultado = eval(entrada.get())
entrada.delete(0, tk.END)
entrada.insert(0, str(resultado))
except Exception:
entrada.delete(0, tk.END)
entrada.insert(0, "Erro")
# Configuração da Janela
janela = tk.Tk()
janela.title("Calculadora Código da Hora")
janela.resizable(False, False)
# Campo de Entrada (Visor)
entrada = tk.Entry(janela, width=16, font=('Arial', 24), borderwidth=5, relief="flat", justify='right')
entrada.grid(row=0, column=0, columnspan=4, padx=10, pady=20)
# Lista de botões: (Texto, Linha, Coluna)
botoes = [
('7', 1, 0), ('8', 1, 1), ('9', 1, 2), ('/', 1, 3),
('4', 2, 0), ('5', 2, 1), ('6', 2, 2), ('*', 2, 3),
('1', 3, 0), ('2', 3, 1), ('3', 3, 2), ('-', 3, 3),
('C', 4, 0), ('0', 4, 1), ('=', 4, 2), ('+', 4, 3),
]
# Criação dinâmica dos botões
for (texto, linha, coluna) in botoes:
if texto == '=':
comando = calcular
elif texto == 'C':
comando = limpar
else:
comando = lambda t=texto: clicar(t)
tk.Button(janela, text=texto, width=5, height=2, font=('Arial', 14, 'bold'),
command=comando).grid(row=linha, column=coluna, sticky="nsew", padx=2, pady=2)
janela.mainloop()
Destaques do Código:
- Grid Layout: Organiza os botões em uma matriz de linhas e colunas.
- Função eval(): Interpreta a string do visor como uma expressão matemática real.
- Lambda: Permite passar argumentos para as funções dos botões sem executá-las imediatamente.