TkInter. Segunda ventana
Mientras que en la entrada anterior vimos cómo trabajar con dos frames diferentes dentro de una misma ventana, en esta veremos cómo crear ventanas secundarias. Para simplificar el procedimiento prescindiremos de las frames y trabajaremos directamente sobre la ventana.
Crear una ventana secundaria puede ser una forma de dividir la presentación de la información en una aplicación de escritorio: mientras que la ventana principal contiene la GUI principal con los controles de introducción de datos, la ventana secundaria sirve para exponer el resultado de procesamiento realizado con esos datos, esto es, cumple funciones de output.
Veremos a continuación un ejemplo muy simple (mero ejercicio en realidad) de uso de dos ventanas, una principal y otra secundaria. Este es el código del script, desarrollado a partir de esta fuente:
from tkinter import *'''Esta función crea una nueva ventana (secundaria), sitúa en ella una etiquetaa la que manda el contenido de un campo de texto situado en la ventana principal.Esta forma es válida para aplicaciones de escritorio.'''def envia_boton():ventana2 = Toplevel() # Crea la ventana secundariaventana2.geometry("400x200")#dimensiónventana2.title("Ventana secundaria")#y títulovalor_entrada = entrada.get() #Entrada de texto desde ventana principaletiqueta = Label(ventana2, text="El valor introducido en la ventana principal es: " + valor_entrada).grid(row=0)cerrarSecundaria = Button(ventana2, text="Cerrar la ventana secundaria", command=ventana2.destroy).grid(row=3)#Cierre de ventana secundariaroot = Tk() #Creamos la ventana principalroot.title("Ventana principal")# títuloroot.geometry("300x100")#y dimensiónentrada = Entry(root, width=35) # campo de textoentrada.grid(row=0)envia = Button(root, text="Enviar", command=envia_boton).grid(row=1)#Comando de paso de contenido a ventana secundariacerrarPrincipal= Button(root, text="Cerrar ventana principal", command=root.destroy).grid(row=3)#Comando de cierre de la ventana principalmainloop()
En este caso he optado por crear la ventana secundaria mediante una función que se ejecuta utilizando el comando envia. La ventana secundaria es generada por medio de la función Toplevel(), perteneciente a la librería TkInter (1).
El resto del código es muy simple y su comprensión no presenta ninguna dificultad. Además los comentarios incluidos en el código (excesivos de no ser por el carácter didáctico del propio script) permiten puntualizar cada uno de los componentes de este script, el cual puedes descargar desde este enlace.
NOTA
(1) También se puede identificar como tk.Toplevel(), ya que se trata de una clase de TkInter.
