
Tkinter no Linux
1. POO Python no Linux
Normalmente, o Python já vem pré-instalado na maioria das distribuições Linux. Para verificar se ele está instalado e qual versão você tem, você pode usar o seguinte comando no terminal:
python3 --version
Se o Python 3 estiver instalado, isso retornará a versão. Caso ainda não esteja instalado, você pode instalá-lo com:
sudo apt-get update
sudo apt-get install python3
2. POO em Python - exemplos simples
1: Criar uma Classe Simples
Objetivo: Criar uma classe chamada Carro com atributos e métodos básicos com python no linux:
Crie um Diretório: Vamos criar um diretório para armazenar seus arquivos Python.
mkdir meuprojeto
cd meuprojeto
Crie o Arquivo carro.py: Use um editor de sua preferencia. Usaremos no exemplo po nano.
nano carro.py
Crie a classe Carro:
- Atributos: marca, modelo, ano
- Método: detalhes() que imprime os atributos do carro
class Carro:
def __init__(self, marca, modelo, ano):
self.marca = marca
self.modelo = modelo
self.ano = ano
def detalhes(self):
print(f"Marca: {self.marca}, Modelo: {self.modelo}, Ano: {self.ano}")
# Teste
carro1 = Carro("Toyota", "Corolla", 2020)
carro1.detalhes()
Salve e Execute o arquivo em python
python3 carro.py
2. Criar uma Classe ContaBancaria
Crie o Arquivo conta_bancaria.py:
nano conta_bancaria.py
class ContaBancaria:
def __init__(self):
self.__saldo = 0
def depositar(self, valor):
self.__saldo += valor
def sacar(self, valor):
if valor <= self.__saldo:
self.__saldo -= valor
else:
print("Saldo insuficiente")
def exibir_saldo(self):
print(f"Saldo: {self.__saldo}")
# Teste
conta1 = ContaBancaria()
conta1.depositar(1000)
conta1.sacar(200)
conta1.exibir_saldo()
Salve e Execute o arquivo em python
python3 conta_bancaria.py
3. O que é o Tkinter?
O Tkinter é a biblioteca padrão do Python para a criação de interfaces gráficas (GUIs). Ele oferece uma maneira simples e rápida de desenvolver aplicativos gráficos, já que vem embutido com o Python, eliminando a necessidade de instalar pacotes adicionais.
Características do Tkinter:
- Portabilidade: Funciona em várias plataformas, incluindo Windows, macOS e Linux.
- Widgets Prontos: Fornece diversos widgets, como botões, rótulos, campos de texto, listas, entre outros, para criar interfaces interativas.
- Integração Completa: Como é nativo do Python, facilita a integração com outras partes do seu código.
- Documentação e Comunidade: Possui ampla documentação e suporte da comunidade, com muitos tutoriais e exemplos disponíveis online.
Uso Comum
Tkinter é frequentemente usado para criar aplicativos desktop simples ou protótipos, onde uma interface gráfica básica é suficiente. É ideal para quem está começando a explorar o desenvolvimento de GUIs.
Instalando Tkinter
A maioria das distribuições Linux já vem com o Tkinter instalado junto com o Python. Você pode verificar a instalação com:
sudo apt-get install python3-tk
Criando sua primeira interface gráfica
Aqui está um exemplo simples de como criar uma janela com Tkinter:
import tkinter as tk
def criar_janela():
# Cria a janela principal
janela = tk.Tk()
janela.title("Minha Primeira Janela")
# Define o tamanho da janela
janela.geometry("300x200")
# Cria um rótulo
rotulo = tk.Label(janela, text="Olá, Tkinter!")
rotulo.pack(pady=20) # Adiciona o rótulo à janela
# Cria um botão
botao = tk.Button(janela, text="Clique Aqui", command=janela.quit)
botao.pack(pady=10)
# Inicia o loop da interface
janela.mainloop()
if __name__ == "__main__":
criar_janela()
Explicação do Código
- Importando Tkinter: Inicie importando o módulo tkinter (import tkinter as tk).
- Criando a Janela Principal: Utilize tk.Tk() para criar a janela principal.
- Adicionando Elementos: Use widgets como Label e Button para adicionar texto e botões.
- Executando o Loop Principal: janela.mainloop() mantém a janela aberta e detecta interações do usuário.
4. Aprofundando no Tkinter?
Widgets no Tkinter
1. Entry (Campos de Texto)
O widget Entry permite a entrada de texto por parte do usuário. É ideal para formulários ou inputs rápidos.
import tkinter as tk
def show_text():
print(entry.get())
janela = tk.Tk()
janela.title("Exemplo de Entry")
entry = tk.Entry(janela)
entry.pack(pady=10)
button = tk.Button(janela, text="Mostrar Texto", command=show_text)
button.pack(pady=5)
janela.mainloop()
2. Frame (Contêineres)
Os Frame são usados para organizar widgets em grupos. Eles ajudam a estruturar a interface de forma lógica.
import tkinter as tk
janela = tk.Tk()
janela.title("Exemplo de Frame")
frame = tk.Frame(janela, borderwidth=2, relief="solid")
frame.pack(padx=10, pady=10)
rotulo_dentro_frame = tk.Label(frame, text="Dentro do Frame")
rotulo_dentro_frame.pack(padx=5, pady=5)
janela.mainloop()
3. Canvas (Desenho)
O Canvas é usado para desenhar formas, gráficos, imagens, etc. É altamente flexível para personalização visual.
import tkinter as tk
janela = tk.Tk()
janela.title("Exemplo de Canvas")
canvas = tk.Canvas(janela, width=200, height=100, bg="white")
canvas.pack(pady=10)
# Desenhando uma linha
canvas.create_line(0, 0, 200, 100, fill="blue")
janela.mainloop()
4. Button (Botões)
Os botões são essenciais para interações. Você pode associar funções aos cliques.
import tkinter as tk
def on_click():
print("Botão clicado!")
janela = tk.Tk()
janela.title("Exemplo de Button")
button = tk.Button(janela, text="Clique Aqui", command=on_click)
button.pack(pady=10)
janela.mainloop()
5. Label (Rótulos)
O Label é usado para exibir texto ou imagens estáticas.
import tkinter as tk
janela = tk.Tk()
janela.title("Exemplo de Label")
label = tk.Label(janela, text="Este é um rótulo", font=("Arial", 12))
label.pack(pady=10)
janela.mainloop()
Gerenciadores de Layout no Tkinter
1. Pack
O método pack organiza widgets em blocos, alinhando-os em direção ao topo, fundo, esquerda ou direita da janela.
Syntax: widget.pack(option=value, …)
Opções Comuns:
- side: Define o lado (topo, fundo, esquerda, direita) onde o widget será anexado (tk.TOP, tk.BOTTOM, tk.LEFT, tk.RIGHT).
- fill: Expande o widget para preencher espaço adicional (tk.X, tk.Y, tk.BOTH).
- expand: Permite que o widget use espaço extra disponível (True ou False).
Exemplo de Uso:
import tkinter as tk
janela = tk.Tk()
botao1 = tk.Button(janela, text="Botão 1")
botao1.pack(side=tk.LEFT, fill=tk.Y)
botao2 = tk.Button(janela, text="Botão 2")
botao2.pack(side=tk.LEFT, fill=tk.Y)
janela.mainloop()
2. Grid
O grid organiza widgets em tabelas usando linhas e colunas, oferecendo controle mais preciso sobre a colocação.
Syntax: widget.grid(row=n, column=n, option=value, …)
Opções Comuns:
- row e column: Define a linha e coluna onde o widget será colocado.
- sticky: Alinha o widget dentro da célula (usos de direções do compasso, ex: tk.N, tk.S, tk.E, tk.W).
- padx e pady: Define o preenchimento externo horizontal e vertical.
Exemplo de Uso:
import tkinter as tk
janela = tk.Tk()
botao1 = tk.Button(janela, text="Botão 1")
botao1.grid(row=0, column=0)
botao2 = tk.Button(janela, text="Botão 2")
botao2.grid(row=0, column=1)
janela.mainloop()
3. Place
O place posiciona widgets em coordenadas específicas, fornecendo controle absoluto sobre a localização de cada widget.
Syntax: widget.place(x=x, y=y, option=value, …)
Opções Comuns:
- x, y: Coordenadas precisas em pixels.
- relx, rely: Coordenadas relativas (de 0.0 a 1.0) baseadas no tamanho do contêiner.
- anchor: Define qual parte do widget é localizada na posição especificada (tk.CENTER, tk.NW, etc.).
Exemplo de Uso:
import tkinter as tk
janela = tk.Tk()
botao1 = tk.Button(janela, text="Botão 1")
botao1.place(x=50, y=50)
botao2 = tk.Button(janela, text="Botão 2")
botao2.place(x=150, y=50)
janela.mainloop()
Sistema de Eventos no Tkinter
O que são Eventos?
Eventos são ações que ocorrem devido à interação do usuário com a interface, como cliques de mouse, pressionamento de teclas, entre outros. O Tkinter permite capturar e responder a esses eventos utilizando funções chamadas “callbacks”.
Lidando com Eventos
1. Eventos de Botão
Para associar uma função a um clique de botão, você pode usar o parâmetro command do widget Button.
2. Eventos de Teclado
Você pode capturar eventos de teclado usando o método bind.
3. Eventos de Mouse
O bind também pode ser usado para capturar cliques e movimentos do mouse.
Tipos Comuns de Eventos
- Clique do Mouse: <Button-1>, <Button-2>, <Button-3>
- Teclado: <Key>, <Return> (Enter), <Escape>
- Movimento do Mouse: <Motion>
- Eventos da Janela: <Configure>, <FocusIn>, <FocusOut>
import tkinter as tk
def on_click():
print("Botão clicado!")
def on_key(event):
print(f"Tecla: {event.char}")
def on_mouse(event):
print(f"Mouse na posição: {event.x}, {event.y}")
janela = tk.Tk()
# Botão com evento de clique
botao = tk.Button(janela, text="Clique Aqui", command=on_click)
botao.pack()
# Ligação para eventos de teclado e mouse
janela.bind('', on_key)
janela.bind('', on_mouse)
janela.mainloop()