Crear ventanas secundarias con Toplevel
En Tkinter, puedes crear nuevas ventanas adicionales a la ventana principal utilizando la clase Toplevel
. La clase Toplevel
permite crear ventanas secundarias que pueden ser independientes de la ventana principal y pueden contener sus propios widgets.
Crear una Ventana Secundaria con Toplevel
En Tkinter, puedes crear nuevas ventanas adicionales a la ventana principal utilizando la clase Toplevel
. La clase Toplevel
permite crear ventanas secundarias que pueden ser independientes de la ventana principal y pueden contener sus propios widgets.
Crear una Ventana Secundaria con Toplevel
Para crear y mostrar una ventana secundaria en Tkinter debemos realizar los siguientes pasos:
1. Importar Tkinter
Importamos el módulo Tkinter.
1
import tkinter as tk
2. Crear la Ventana Principal
Inicializar la ventana principal con la clase Tk
.
1
2
3
root = tk.Tk()
root.title("Ventana Principal")
root.geometry("300x200")
3. Definir la Función para Abrir una Ventana Secundaria
Crea una función que será llamada para abrir la nueva ventana secundaria. En esta función, instanciarás la clase Toplevel
.
1
2
3
4
5
6
7
8
9
10
11
def open_new_window():
new_window = tk.Toplevel(root)
new_window.title("Ventana Secundaria")
new_window.geometry("200x150")
# Añadir contenido a la ventana secundaria
label = tk.Label(new_window, text="¡Esta es una nueva ventana!")
label.pack(pady=20)
button = tk.Button(new_window, text="Cerrar", command=new_window.destroy)
button.pack(pady=10)
4. Crear un Botón en la Ventana Principal para Abrir la Ventana Secundaria
Añadimos un botón en la ventana principal que llame a la función open_new_window
cuando se haga clic.
1
2
open_button = tk.Button(root, text="Abrir Ventana Secundaria", command=open_new_window)
open_button.pack(pady=50)
5. Ejecutar el Bucle Principal
Finalmente, inicia el bucle de eventos para mostrar la ventana principal y manejar los eventos de las ventanas.
1
root.mainloop()
Código Completo
Aquí el código completo que crea una ventana principal con un botón para abrir una ventana secundaria.
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
import tkinter as tk
def open_new_window():
new_window = tk.Toplevel(root)
new_window.title("Ventana Secundaria")
new_window.geometry("200x150")
# Añadir contenido a la ventana secundaria
label = tk.Label(new_window, text="¡Esta es una nueva ventana!")
label.pack(pady=20)
button = tk.Button(new_window, text="Cerrar", command=new_window.destroy)
button.pack(pady=10)
# Crear la ventana principal
root = tk.Tk()
root.title("Ventana Principal")
root.geometry("300x200")
# Crear un botón para abrir la ventana secundaria
open_button = tk.Button(root, text="Abrir Ventana Secundaria", command=open_new_window)
open_button.pack(pady=50)
# Ejecutar el bucle principal
root.mainloop()
Consideraciones Adicionales
Interacción entre Ventanas: Las ventanas secundarias creadas con
Toplevel
son independientes de la ventana principal. Puedes interactuar entre ventanas usando referencias a objetos y métodos compartidos.Manejo de Cierre: El botón en la ventana secundaria usa
new_window.destroy
para cerrarla. Puedes manejar el evento de cierre también mediante el métodoprotocol()
si necesitas realizar alguna acción especial al cerrar la ventana.Estilos y Diseño: Puedes aplicar estilos y diseño similares a los que usarías en la ventana principal, agregando widgets y configuraciones adicionales a las ventanas secundarias.
Con estos conceptos, puedes crear y gestionar múltiples ventanas en tus aplicaciones Tkinter, permitiendo una experiencia de usuario más rica y flexible.
Mi lema es