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 comif arquivo_escolhido:. - Seleção Múltipla com
askopenfilenames(): Para permitir a escolha de múltiplos arquivos simultaneamente, substitua a função porfiledialog.askopenfilenames(), que retornará uma tupla com todos os caminhos selecionados.

Comentários
Postar um comentário