Caixa de diálogo Abrir arquivo Tkinter

Resumo : neste tutorial, você aprenderá como mostrar uma caixa de diálogo de arquivo aberto em aplicativos Tkinter.

Introdução às funções da caixa de diálogo Abrir arquivo do Tkinter

Ao desenvolver um aplicativo Tkinter que lida com o sistema de arquivos, você precisa fornecer uma caixa de diálogo que permita a seleção de arquivos.

Para fazer isso, você pode usar o tkinter.filedialogmódulo. As etapas a seguir mostram como exibir uma caixa de diálogo de arquivo aberto:

Primeiro, importe o tkinter.filedialogmódulo:

from tkinter import filedialog as fdLinguagem de código:  Python  ( python )

Segundo, chame a fd.askopenfilename()função para mostrar uma caixa de diálogo que permite a seleção de um único arquivo:

filename = fd.askopenfilename()Linguagem de código:  Python  ( python )

A askopenfilename()função retorna o nome do arquivo que você selecionou.

O askopenfilename()também oferece suporte a outras opções úteis, incluindo o diretório inicial exibido na caixa de diálogo ou a filtragem de arquivos por suas extensões.

O programa a seguir exibe um botão:

Se você clicar no botão, uma caixa de diálogo de arquivo será aberta:

Após selecionar um arquivo, o programa mostrará o caminho completo do arquivo selecionado:

O programa:

import tkinter as tk
from tkinter import ttk
from tkinter import filedialog as fd
from tkinter.messagebox import showinfo

# create the root window
root = tk.Tk()
root.title('Tkinter Open File Dialog')
root.resizable(False, False)
root.geometry('300x150')


def select_file():
    filetypes = (
        ('text files', '*.txt'),
        ('All files', '*.*')
    )

    filename = fd.askopenfilename(
        title='Open a file',
        initialdir='/',
        filetypes=filetypes)

    showinfo(
        title='Selected File',
        message=filename
    )


# open button
open_button = ttk.Button(
    root,
    text='Open a File',
    command=select_file
)

open_button.pack(expand=True)


# run the application
root.mainloop()
Linguagem de código:  Python  ( python )

Selecionando vários arquivos

A askopenfilenames()função exibe uma caixa de diálogo de arquivo para seleções múltiplas de arquivos. Ele retorna os nomes dos arquivos selecionados como uma tupla. Por exemplo:

import tkinter as tk
from tkinter import ttk
from tkinter import filedialog as fd
from tkinter.messagebox import showinfo

# create the root window
root = tk.Tk()
root.title('Tkinter File Dialog')
root.resizable(False, False)
root.geometry('300x150')


def select_files():
    filetypes = (
        ('text files', '*.txt'),
        ('All files', '*.*')
    )

    filenames = fd.askopenfilenames(
        title='Open files',
        initialdir='/',
        filetypes=filetypes)

    showinfo(
        title='Selected Files',
        message=filenames
    )


# open button
open_button = ttk.Button(
    root,
    text='Open Files',
    command=select_files
)

open_button.pack(expand=True)

root.mainloop()Linguagem de código:  Python  ( python )

Abrindo arquivos diretamente

Depois de obter os nomes dos arquivos selecionados, você pode abri-los usando o open()método.

Para torná-lo mais conveniente, o tkinter.filedialogmódulo também oferece algumas funções que permitem selecionar um ou mais arquivos e retornar os objetos do arquivo diretamente.

A askopenfile()função exibe uma caixa de diálogo de arquivo e retorna um objeto de arquivo do arquivo selecionado:

f = fd.askopenfile()Linguagem de código:  Python  ( python )

E a askopenfiles()função mostra uma caixa de diálogo de arquivo e retorna objetos de arquivo dos arquivos selecionados:

f = fd.askopenfiles()Linguagem de código:  Python  ( python )

O programa a seguir ilustra como usar a askopenfile()função:

Isso permitirá que você abra um arquivo de texto e exiba o conteúdo do arquivo em um widget de texto :

import tkinter as tk
from tkinter import ttk
from tkinter import filedialog as fd

# Root window
root = tk.Tk()
root.title('Display a Text File')
root.resizable(False, False)
root.geometry('550x250')

# Text editor
text = tk.Text(root, height=12)
text.grid(column=0, row=0, sticky='nsew')


def open_text_file():
    # file type
    filetypes = (
        ('text files', '*.txt'),
        ('All files', '*.*')
    )
    # show the open file dialog
    f = fd.askopenfile(filetypes=filetypes)
    # read the text file and show its content on the Text
    text.insert('1.0', f.readlines())


# open file button
open_button = ttk.Button(
    root,
    text='Open a File',
    command=open_text_file
)

open_button.grid(column=0, row=1, sticky='w', padx=10, pady=10)


root.mainloop()Linguagem de código:  Python  ( python )

Resumo

  • Use a askopenfilename()função para exibir uma caixa de diálogo de arquivo aberto que permite aos usuários selecionar um arquivo.
  • Use a askopenfilenames()função para exibir uma caixa de diálogo de arquivo aberto que permite aos usuários selecionar vários arquivos.
  • Use a função askopenfile()ou askopenfiles()para exibir uma caixa de diálogo de arquivo aberto que permite aos usuários selecionar um ou vários arquivos e receber um arquivo ou vários objetos de arquivo.

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *