Tkinter: Manejo de Archivos con Filedialog
En la mayoría de las aplicaciones gráficas, a menudo necesitamos que el usuario seleccionen o guarden archivos desde o hacia su sistema de archivos. Esto se puede hacer fácilmente en Tkinter utilizando el módulo filedialog
. Este módulo proporciona una forma sencilla de mostrar cuadros de diálogo para abrir, guardar o seleccionar archivos y directorios.
Funciones Principales del Módulo Filedialog
Abrir un archivo: askopenfilename
La función askopenfilename()
abre un cuadro de diálogo para seleccionar un archivo y devuelve la ruta del archivo, aceptará dos parámetros title
y filetypes
:
1
2
3
4
5
6
7
8
9
10
11
12
13
import tkinter as tk
from tkinter import filedialog
def upload_file():
file_path = filedialog.askopenfilename(
title="Selecciona un archivo",
filetypes=[("Text File", "*.txt"), ("All files", "*.*")])
print("Seleccionaste el archivo:", file_path)
root = tk.Tk()
open_bottom = tk.Button(root, text="Subir archivo", command=upload_file)
open_bottom.pack(pady=20)
root.mainloop()
Guardar un archivo: asksavefilename
Para guardar un archivo, existe una función llamada asksaveasfilename()
. Esta función acepta tres argumentos, que son title
, defaultextension
y filetypes
.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
import tkinter as tk
from tkinter import filedialog
def save_file():
file_path = filedialog.asksaveasfilename(
title="Guardar como",
defaultextension=".txt",
filetypes=[("Text files", ".txt"), ("All files", "*.*")]
)
if file_path:
try:
with open(file_path, 'w') as file:
file.write("¡Hola Mundo!")
print("Archivo guardado exitosamente en :", file_path)
except Exception as e:
print("Error guardando el archivo: ", e)
root = tk.Tk()
save_button = tk.Button(root, text="Guardar Archivo", command=save_file)
save_button.pack(pady=20)
root.mainloop()
Seleccionar un directorio: askopendirectory
La función askopendirectory()
abre un cuadro de diálogo que permite seleccionar un directorio, y devuelve la ruta del directorio elegido:
1
2
3
4
5
6
7
8
9
10
11
12
import tkinter as tk
from tkinter import filedialog
def upload_folder():
directory = filedialog.askopenfilename(title="Selecciona directorio")
if directory:
print("Directorio seleccionado:", directory)
root = tk.Tk()
open_bottom = tk.Button(root, text="Subir directorio", command=upload_folder)
open_bottom.pack(pady=20)
root.mainloop()
Mi lema es