Biblioteca TKinter

Tkinter é a biblioteca padrão do Python para criar interfaces gráficas de utilizador (GUI). Ela funciona como uma interface para o kit de ferramentas Tcl/Tk, que é uma biblioteca de widgets GUI gratuita e multiplataforma. Tkinter permite que programadoress criem janelas, botões, caixas de texto, menus e outros componentes gráficos de forma simples e eficiente

Principais caracteristicas do TKinter

  • Incluido no Python: Vem pré-instalado na maioria das distribuições Python, exceto algumas versões Linux que podem exigir instalação separada.
  • Portabilidade: Programas feitos com Tkinter rodam em Windows, macOS, Linux e Unix sem necessidade de bibliotecas extras.
  • Facilidade de uso: Possui uma API simples e intuitiva, ideal para iniciantes e projetos rápidos.
  • Widgets e hierarquia: A interface é composta por widgets (botões, rótulos, frames, etc.) organizados em hierarquia, onde widgets filhos são adicionados a widgets pais.
  • Gestão de layout: Utiliza gestores de geometria como grid()pack() e place() para posicionar os elementos na janela.
  • Execução: O método mainloop() mantém a janela aberta e responde a eventos do utilizador.

Exemplo básico

import tkinter as tk

def exibir_mensagem():
    print("O botão foi clicado!")

janela = tk.Tk()
janela.title("Exemplo Tkinter")

botao = tk.Button(janela, text="Clique Aqui", command=exibir_mensagem)
botao.pack()

janela.mainloop()

Esse código cria uma janela com um botão que, ao ser clicado, imprime uma mensagem na consola.

Importação do módulo TKinter

O Tkinter é composto por um conjunto de módulos, sendo o mais importante o módulo Tkinter que contém os componentes e as constantes.

Em Python podemos importar o módulo Tkinter das seguintes maneiras:

import tkinter

window = tkinter.Tk()

bt = tkinter.Button(window, text="Red", fg="red")
bt.pack(expand=True, anchor=tkinter.CENTER)

window.mainloop()

Podemos usar o formato import tkinter as…:

import tkinter as tk

window = tk.Tk()

bt = tk.Button(window, text="Red", fg="red")
bt.pack(expand=True, anchor=tk.CENTER)

window.mainloop()

Ou podemos usar o formato from tkinter import *:

from tkinter import *

window = Tk()

bt = Button(window, text="Red", fg="red")
bt.pack(expand=True, anchor=CENTER)

window.mainloop()

Loop de eventos

A função mainloop() do Tkinter é responsável por iniciar o loop de eventos da interface gráfica, mantendo a janela do programa ativa e responsiva a interações do utilizador, como cliques e teclas. Esse loop é infinito e bloqueia a execução do código que vem após ele até que a janela seja fechada, garantindo que a aplicação permaneça aberta e atualize a interface conforme necessário

Em termos práticos, a função mainloop() fica “escutando” eventos do sistema operativo e chama as funções associadas a esses eventos (como callbacks de botões), permitindo que a GUI funcione de forma interativa e dinâmica. Sem a função mainloop(), a janela do Tkinter simplesmente não aparece ou fecha imediatamente.

Além disso, mainloop() é uma função bloqueante, ou seja, o programa fica preso nela enquanto a interface está aberta, e qualquer código colocado depois dela só será executado após o fechamento da janela.

import tkinter as tk
root = tk.Tk()
root.mainloop()  # mantém a janela aberta e interativa