Interface Gráfica no Python: Abrindo Arquivos com tkinter.filedialog

Interface Gráfica no Python: Abrindo Arquivos com tkinter.filedialog

Permitir que o usuário selecione arquivos por meio de uma interface gráfica evita erros de digitação manual de caminhos no terminal. Utilizando o módulo nativo tkinter.filedialog, você pode abrir a caixa de diálogo padrão do sistema operacional para navegação e seleção de arquivos em poucas linhas de código.

Python
import tkinter as tk
from tkinter import filedialog

def selecionar_arquivo(titulo: str = "Selecione um arquivo", tipos_arquivos: list = None) -> str:
    # Oculta a janela principal do Tkinter
    root = tk.Tk()
    root.withdraw()

    # Define os filtros de extensão padrão caso não sejam informados
    if tipos_arquivos is None:
        tipos_arquivos = [("Todos os arquivos", "*.*"), ("Textos", "*.txt"), ("PDFs", "*.pdf")]

    # Abre a caixa de diálogo gráfica para seleção de arquivo
    caminho_arquivo = filedialog.askopenfilename(
        title=titulo,
        filetypes=tipos_arquivos
    )

    # Destrói a instância oculta do Tkinter
    root.destroy()

    return caminho_arquivo

# Exemplo prático de uso
if __name__ == "__main__":
    # Abre a janela e armazena o caminho selecionado
    arquivo_escolhido = selecionar_arquivo(titulo="Escolha o relatório para importar")

    if arquivo_escolhido:
        print(f"Arquivo selecionado com sucesso: {arquivo_escolhido}")
    else:
        print("Seleção cancelada pelo usuário.")

Pontos-chave

  • Ocultação do Tkinter (root.withdraw()): Inicializar a raiz do Tkinter cria uma janela vazia por padrão. Chamar .withdraw() garante que apenas a caixa de seleção nativa do sistema fique visível.

  • Filtros de Extensão (filetypes): O parâmetro aceita uma lista de tuplas [("Descrição", "*.extensao")], permitindo restringir quais formatos de arquivo o usuário poderá visualizar e selecionar.

  • Tratamento de Cancelamento: Se o usuário fechar a janela ou clicar em "Cancelar", a função askopenfilename() retorna uma string vazia "", facilitando a validação condicional com if arquivo_escolhido:.

  • Seleção Múltipla com askopenfilenames(): Para permitir a escolha de múltiplos arquivos simultaneamente, substitua a função por filedialog.askopenfilenames(), que retornará uma tupla com todos os caminhos selecionados.

Comentários

Postagens mais visitadas deste blog

Gerando Relatórios em PDF com Python (ReportLab e FPDF)

Python para Computação Quântica: Introdução com Qiskit

C# e Banco de Dados: Como Conectar e Realizar Operações com SQL Server