Ventanas.

flor

La información se presenta al usuario a través de ventanas. La
ventana más importante es la ventana principal, que generalmente recibe
el nombre de root.

Los widgets se colocan en las ventanas. Dentro de la ventana principal, podemos crear otras ventanas secundarias, que dependan de ella.

root.mainloop( ) El método más importante de todos para la ventana principal (root) es mainloop ( ). El programa se ejecuta en su totalidad hasta llegar a esta instrucción. Cuando el programa llega a ella, se mantiene a la espera hasta que se produzca dentro de la ventana activa algún evento que tenga que gestionar. Este evento puede ser un temporizador que finaliza, o un botón de acción que pulsa el usuario.

Esta instrucción se suele colocar al final del programa, ya que todo
lo que aparezca después de ella, solo se ejecutará una vez cerrada la
ventana principal root (en ese momento se cierra el bucle Tkinter).

from tkinter import Tk, Label
root=Tk()
etiqueta=Label(text="\n ¡Bienvenido a Tkinter!\n")
etiqueta.pack()
root.mainloop()

Si ejecutamos este código vemos que se crea una ventana (ventana
root), donde se puede leer el mensaje creado en etiqueta. Para cerrar la ventana, podemos pulsar el aspa.

root 1

root.title(texto) Con este método podemos añadir un título a la barra de
herramientas de la ventana.

root.geometry(“entero_ancho x entero_alto”) Podemos especificar el ancho y alto en píxeles con exactitud de la ventana. Si no especificamos ningún tamaño, la ventana se adapta a los widgets que contenga.

root.resizable(ancho,alto) Por defecto, el usuario puede modificar el ancho y/o alto de la ventana. Sin embargo, podemos establecer que no se puedan modificar. Para ello debemos establecer el ancho y/o alto como false. Por ejemplo root.resizable(True,False). Nos permite modificar el ancho, pero no el alto.

root.minsize(entero_ancho,entero_alto) En caso de que sean modificables, podemos establecer el tamaño mínimo que pueden tener ancho y/o alto.

root.maxsize(ancho,alto) También en caso de que sean modificables, podemos establecer el tamaño máximo de ancho y/o alto.

root.attributes(«-fullscreen»,1) Con esta instrucción mostraremos la ventana a pantalla completa. Tiene el inconveniente de que desaparece la barra de título. No tendremos la opción de cerrarla con el aspa.

Si no hemos tomado medidas para poder cerrar la ventana de alguna
otra forma (que no sea con el aspa), podremos pulsar Alt Gr+F4

root.protocol(“WM_DELETE_WINDOW”, funcion_cierre) La forma normal de salir de una aplicación sería eligiendo la opción de salir asociada a algún botón, o bien generando algún evento destinado al cierre del programa.
No obstante, por si el usuario cierra la aplicación con el aspa de la
barra de título, esta instrucción nos permitirá ejecutar una función que
seguirá algún protocolo programado por nosotros, para que se pueda salir
del programa de forma segura. Al final de la función de cierre, incluiremos
el método root.destroy( ) si realmente deseamos salir. En caso contrario la
aplicación continuará.

root.iconify( ) // root.deiconify( ) Con root.iconify( ) minimizamos la ventana. Esta ventana podrá ser restablecida de nuevo directamente desde la barra de tareas de Windows o bien con el método root.deiconify( )

root.withdraw( ) El método hace desaparecer de la pantalla la ventana. No la cierra, pero solo se puede restaurar con root.deiconify( )

root.destroy( ) Este método elimina la ventana. Se puede utilizar cuando se produce un evento que cierre la aplicación, o se elija la opción de salir.

root.configure(background=”color”) Con ello podemos darle un color de fondo a la ventana principal. El color vendrá determinado por el parámetro backgroud, que se puede establecer con el nombre de uno de los colores básicos, o bien con el código en hexadecimal de cualquier color.
Nota: El método “.config” es idéntico a “.configure”

Veamos como podríamos mejorar el ejemplo anterior:

from tkinter import Tk, Label

def funcion_cierre():
    root.destroy()
    print("Gracias por venir.")
    
root=Tk()
root.title("Ventana de muestra.")
root.geometry("500x200")
root.resizable(False,False)
root.protocol("WM_DELETE_WINDOW", funcion_cierre)
root.configure(background="#8AF945")
etiqueta=Label(text="\n ¡Bienvenido a Tkinter!\n")
etiqueta.pack()
root.mainloop()
root 2
  • Le hemos dado un título a la ventana.
  • Hemos decidido unas dimensiones.
  • Hemos establecido que el usuario no podrá redimensionar las
    dimensiones de la ventana.
  • Hemos establecido un protocolo que se ejecutará cuando el usuario pulse el aspa de cierre de ventana. En concreto el protocolo consistirá en hacer efectivo el cierre de la ventana con root.destroy ( ) y a continuación nos envía a la consola un mensaje de despedida.
  • Le hemos dado un color de fondo.
  • Después de definir el widget etiqueta, lo hemos posicionado con uno de los tres métodos disponibles.
Iniciocomandos Pythonbloques de código
comentar códigoprint ( )input ( )
captura de erroresCadenasDatos Numéricos
Módulo randomMódulo statisticsDatos Fecha/hora
ConstantesBucles forBucles while
Bloque ifTuplasListas.
match caseConjuntosDiccionarios
FuncionesClasesArchivos
Entorno gráfico TkinterVentanasWidgets básicos