1. Janelas padrão de diálogo
O Tkinter tem um módulo embutido chamado messagebox
para mostrar janelas de diálogo, como mensagens informativas, avisos, erros e confirmações. Esses diálogos são úteis para interagir com o usuário e criar notificações.
Importando o módulo messagebox
from tkinter import messagebox
Principais tipos de diálogos com messagebox
- Janela informativa
Janelas informativas comunicam informações importantes ao usuário. Use a função
messagebox.showinfo()
.def show_info(): messagebox.showinfo("Informação", "Esta é uma mensagem informativa")
- Aviso
A janela de aviso informa sobre um possível problema ou sugere atenção para uma ação específica. A função
messagebox.showwarning()
cria uma janela de aviso.def show_warning(): messagebox.showwarning("Aviso", "Esta é uma mensagem de aviso")
- Janela de erro
A janela de erro é mostrada quando ocorre um erro. A função
messagebox.showerror()
é usada para notificar o usuário sobre um erro.def show_error(): messagebox.showerror("Erro", "Ocorreu um erro!")
- Confirmação de ação
As confirmações permitem que o usuário confirme ou cancele uma ação. A função
messagebox.askyesno()
retornaTrue
ouFalse
baseado na escolha do usuário.def confirm_exit(): response = messagebox.askyesno("Sair", "Tem certeza que deseja sair?") if response: root.quit()
2. Seleção de arquivos e pastas
O Tkinter também oferece o módulo filedialog
, que permite que os usuários escolham arquivos e pastas. Isso é útil para apps que lidam com arquivos, onde o usuário precisa carregar ou salvar um arquivo.
Importando o módulo filedialog
from tkinter import filedialog
Principais funções de filedialog
- Abrir arquivo: A função
askopenfilename()
permite que o usuário escolha um arquivo para abrir.def open_file(): file_path = filedialog.askopenfilename( title="Abrir arquivo", filetypes=[("Arquivos de texto", "*.txt"), ("Todos os arquivos", "*.*")]) if file_path: print("Arquivo selecionado:", file_path)
- Salvar arquivo: A função
asksaveasfilename()
permite que o usuário escolha o caminho e o nome para salvar um arquivo.def save_file(): file_path = filedialog.asksaveasfilename( title="Salvar arquivo", defaultextension=".txt", filetypes=[("Arquivos de texto", "*.txt"), ("Todos os arquivos", "*.*")]) if file_path: print("Arquivo salvo como:", file_path)
- Selecionar pasta: A função
askdirectory()
permite escolher uma pasta.def select_directory(): directory_path = filedialog.askdirectory(title="Selecionar pasta") if directory_path: print("Pasta selecionada:", directory_path)
3. Janelas pop-up customizadas
Além das janelas de diálogo padrão, o Tkinter fornece o widget Toplevel
para criar janelas pop-up customizadas. Essas janelas podem ser usadas para criar pop-ups multifuncionais com caixas de entrada, botões e outros elementos de interface.
Criando uma janela pop-up com Toplevel
import tkinter as tk
# Função para abrir uma janela pop-up
def open_popup():
popup = tk.Toplevel(root)
popup.title("Janela pop-up")
popup.geometry("300x200")
label = tk.Label(popup, text="Digite seu nome:")
label.pack(pady=10)
entry = tk.Entry(popup)
entry.pack(pady=5)
# Botão para fechar a janela
close_button = tk.Button(popup, text="Fechar", command=popup.destroy)
close_button.pack(pady=10)
# Janela principal
root = tk.Tk()
root.title("Janela principal")
root.geometry("400x300")
# Botão para abrir o pop-up
open_button = tk.Button(root, text="Abrir janela pop-up", command=open_popup)
open_button.pack(pady=50)
root.mainloop()
Explicação do código
tk.Toplevel(root)
cria uma nova janela que aparece acima da janela principalroot
.- Elementos da janela: Dentro da janela pop-up, você pode adicionar rótulos, caixas de entrada e botões.
- Botão "Fechar": A função
popup.destroy
fecha a janela pop-up.
4. Aplicação completa com diálogos e pop-ups
Agora vamos juntar todos os elementos que vimos em uma única aplicação, que inclui janelas de diálogo padrão, seleção de arquivos e uma janela pop-up customizada.
import tkinter as tk
from tkinter import messagebox, filedialog
# Funções para diálogos padrão
def show_info():
messagebox.showinfo("Informação", "Esta é uma mensagem informativa")
def show_warning():
messagebox.showwarning("Aviso", "Esta é uma mensagem de aviso")
def show_error():
messagebox.showerror("Erro", "Ocorreu um erro!")
def confirm_exit():
response = messagebox.askyesno("Sair", "Tem certeza que deseja sair?")
if response:
root.quit()
def open_file():
file_path = filedialog.askopenfilename(title="Abrir arquivo", filetypes=[("Arquivos de texto", "*.txt"), ("Todos os arquivos", "*.*")])
if file_path:
messagebox.showinfo("Arquivo selecionado", file_path)
def save_file():
file_path = filedialog.asksaveasfilename(title="Salvar arquivo", defaultextension=".txt", filetypes=[("Arquivos de texto", "*.txt"), ("Todos os arquivos", "*.*")])
if file_path:
messagebox.showinfo("Arquivo salvo como", file_path)
def select_directory():
directory_path = filedialog.askdirectory(title="Selecionar pasta")
if directory_path:
messagebox.showinfo("Pasta selecionada", directory_path)
# Função para janela pop-up customizada
def open_popup():
popup = tk.Toplevel(root)
popup.title("Janela pop-up")
popup.geometry("300x200")
tk.Label(popup, text="Digite seu nome:").pack(pady=10)
name_entry = tk.Entry(popup)
name_entry.pack(pady=5)
tk.Button(popup, text="Fechar", command=popup.destroy).pack(pady=10)
# Janela principal
root = tk.Tk()
root.title("Aplicação com diálogos e pop-ups")
root.geometry("400x400")
# Botões para chamar diferentes diálogos e pop-ups
tk.Button(root, text="Informação", command=show_info).pack(pady=5)
tk.Button(root, text="Aviso", command=show_warning).pack(pady=5)
tk.Button(root, text="Erro", command=show_error).pack(pady=5)
tk.Button(root, text="Confirmação de saída", command=confirm_exit).pack(pady=5)
tk.Button(root, text="Abrir arquivo", command=open_file).pack(pady=5)
tk.Button(root, text="Salvar arquivo", command=save_file).pack(pady=5)
tk.Button(root, text="Selecionar pasta", command=select_directory).pack(pady=5)
tk.Button(root, text="Abrir janela pop-up", command=open_popup).pack(pady=20)
root.mainloop()
GO TO FULL VERSION