Tkinter Filedialog¶
Crea una ventana que permite seleccionar un archivo y retornar la ruta del archivo seleccionado.
Ejemplo¶
# -*- coding: utf-8 -*-
"""
Ejemplo básico de ventana con filedialog
"""
import tkinter as tk
# from tkinter import filedialog ###
class Example(tk.Frame): #Ventana principal
def __init__(self,main):
super().__init__(main)
self.initUI()
def initUI(self):
self.master.title("File dialog") #Título
self.pack(fill=tk.BOTH, expand=1)
menubar = tk.Menu(self.master) #Barra menú
self.master.config(menu=menubar)
fileMenu = tk.Menu(menubar, tearoff=0) #Menú file
fileMenu.add_command(label="Open", command=self.Abrir)
menubar.add_cascade(label="File", menu=fileMenu) #Pestaña en barra menú
#Donde se muestra el archivo seleccionado
self.txt = tk.Text(self.master)
self.txt.pack(fill=tk.BOTH, expand=1)
def Abrir(self):
#Abre el dialogo para seleccionar archivo y lo muestra en el widget
#Tipos de archivos
ftypes = [('Python files', '*.py'), ('All files', '*')]
#Retorna la ruta del archivo seleccionado
ruta = tk.filedialog.askopenfilename(filetypes = ftypes)
if ruta != '':
self.txt.insert(tk.END, "Archivo: "+ruta+"\n\n\n") #Muestra ruta
text = self.Leer(ruta)
self.txt.insert(tk.END, text) #Muestra texto del archivo
def Leer(self, filename):
#Lee el archivo y retorna el texto que contiene
with open(filename, "r") as f:
text = f.read()
return text
def main():
root = tk.Tk()
root.geometry("400x400")
ex = Example(root)
ex.mainloop()
if __name__ == '__main__':
main()
El resultado es el siguiente:
En este ejemplo se crea una clase para la interfaz, en la cual se define un menú (ver Tkinter Menu) con una sola opción que está conectada al método Abrir
y un text (ver Tkinter Text) en el que se mostrará la ruta y el texto que contiene el archivo seleccionado. Por ejemplo, si se selecciona el archivo .py del ejemplo el resultado es el siguiente:
El método Abrir
abre la ventana que permite seleccionar el archivo. Esta ventana se abre con tk.filedialog.askopenfilename
y se indica las opciones de tipo de archivos a buscar con filetypes
, en el ejemplo se pueden buscar archivos .py o cualquier tipo de archivos. Estas opciones se agregan como se observa en la lista ftypes
. Luego, se valida que se haya seleccionado un archivo, de ser así, se muestra la ruta en el text y por medio del método Leer
se lee y retorna el texto del archivo para finalmente mostrarlo también en el text.