Control de errores
Al abrir un archivo se pueden producir errores. Vamos a introducir algunos
cambios en el programa:
| Visor04.py |
|---|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57 | import tkinter as tk
from tkinter import filedialog
from tkinter import messagebox
from PIL import Image, ImageTk
class App:
def __init__(self, ventana):
self.ventana = ventana
self.ventana.title('Visor de imágenes')
self.ventana.geometry('800x600')
# Añadir un panel para botones
self.panelBotones = tk.Frame(self.ventana)
self.panelBotones.pack()
# Añadir un botón "Salir"
self.btnSalir = tk.Button(self.panelBotones, text='Salir', command=self.ventana.destroy)
self.btnSalir.pack(side='left')
# Añadir un botón "Abrir"
self.btnAbrir = tk.Button(self.panelBotones, text='Abrir', command=self.abrir)
self.btnAbrir.pack(side='left')
# Añadir un panel para mostrar la imagen
self.panelImagen = tk.Label(self.ventana)
self.panelImagen.pack()
def abrir(self):
tipos_archivos= [
("Todos", "*.*"),
("JPEG" , ".jpg"),
("PNG" , ".png"),
("GIF" , ".gif")
]
self.archivo = filedialog.askopenfilename(
defaultextension=".jpg",
filetypes=tipos_archivos
)
if not self.archivo:
return
try:
self.imagen = Image.open(self.archivo)
except:
messagebox.showerror("Error", "Error abriendo archivo")
self.mostrar()
def mostrar(self):
self.tk_imagen = ImageTk.PhotoImage(self.imagen)
self.panelImagen.configure(image=self.tk_imagen)
ventana = tk.Tk()
App(ventana)
ventana.mainloop()
|
Al método filedialog.askopenfilename le hemos añadido dos argumentos para
establecer unos filtros que permitan seleccionar solos los ficheros de imágenes
en la ventana de diálogo.
Con las sentencias
if not self.archivo:
return
Controlamos que el archivo seleccionado está en blanco, es decir, que el usuario
ha cerrado la ventana de diálogo pulsando en el botón [cancelar] .
En el apartado except de la sentencia try, establecemos que, si se produce
un error abriendo el archivo, se muestre un mensaje de error. Usamos el módulo
messagebox de Tkinter, que tiene una función showerror(), cuyo cometido es
mostrar una ventana con un mensaje de error. El primer argumento es el título
de la ventana:
