CodeGym /Cursos /Python SELF PT /Trabalhando com janelas de diálogo e pop-ups

Trabalhando com janelas de diálogo e pop-ups

Python SELF PT
Nível 50 , Lição 1
Disponível

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

  1. 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")
                
  2. 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")
                
  3. 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!")
                
  4. Confirmação de ação

    As confirmações permitem que o usuário confirme ou cancele uma ação. A função messagebox.askyesno() retorna True ou False 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

  1. 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)
                
  2. 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)
                
  3. 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 principal root.
  • 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()
    
Comentários
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION