Blog
Bienvenidos a la clase n° 1 de interfaces graficas con python y su libreria Tkinter, veremos que es una ventana, como crearla y personalizarla.
¿Qué es una ventana en Tkinter?
Una ventana es un área visual rectangular, la cual contendrá todos nuestros iconos, botones, cuadros de entrada de texto, entre otros. Existen dos tipos: las ventanas de aplicación, que inician y finalizan las aplicaciones gráficas, y las ventanas de dialogo, que permiten la comunicación simple con el usuario, ambas formando la interfaz de usuario.
¿Cómo importar el módulo Tkinter?
De la misma forma de llamar un módulo en python se utiliza el módulo Tkinter:
from tkinter import *
Con esta instrucción le decimos a python que emplearemos todo los componentes del módulo Tkinter.
import tkinter as tk
Así le decimos a python de emplearemos el módulo tkinter y los llamaremos tk, cada vez que se utiliza algún elemento de Tkinter, debe estar precedido de tk.
Ejemplos:
from tkinter import * raiz = Tk()
import tkinter as tk raiz = tk.Tk()
Creación de la primera ventana y métodos de personalización
La programación GUI es un arte, y como todo arte, necesitas un tablero de dibujo para capturar tus ideas. El tablero de dibujo que utilizará se llama ventana raíz. Nuestro primer objetivo es tener lista la ventana raíz.
La siguiente imagen muestra la ventana raíz que podemos crear:
Dibujar la ventana raíz es sencillo. Sólo necesita las siguientes tres líneas de código:
from tkinter import * raiz = Tk() raiz.mainloop()
Guardamos el código con la extensión .py y lo ejecutamos. Este programa debería generar una ventana raíz en blanco, como se muestra en la imagen anterior. Esta ventana está equipada con la función de minimizar, maximizar, y cerrar botones, y un marco en blanco.
- La primera línea de código importamos el módulo tkinter, todos sus métodos y atributos
- La segunda línea creamos una clase llamada raíz del tipo Tk
- La tercera línea llamamos el método mainloop el cual es el que mantiene visible la ventana raíz. Si se elimina esta línea la ventana no se mantendrá visible
Siempre el código debe terminar con el método mainloop.
Ahora, como personalizamos esta ventana, de igual forma como llamamos el método mainloop existen métodos que nos permiten cambiar el tamaño, el nombre a la ventana, el icono, el color de fondo, entre otros.
Para cambiar el nombre de la ventana solo debemos llamar el método title, el cual debemos pasarle como parámetro el nombre, le colocaremos, por ejemplo Primera Ventana
from tkinter import * raiz = Tk() raiz.title("Primera Ventana") #Cambiar el nombre de la ventana raiz.mainloop()
El nombre debe ir entre comillas dobles, guardamos y ejecutamos el código:
Y observamos que, cambia el nombre de nuestra ventana.
Para cambiar el tamaño llamamos al método geometry el cual necesita que le demos un alto y ancho de nuestra ventana:
from tkinter import * raiz = Tk() raiz.title("Primera Ventana") #Cambiar el nombre de la ventana raiz.geometry("520x480") #Configurar tamaño raiz.mainloop()
De igual forma debe estar entre comillas dobles y los valores deben estar en pixeles.
El icono que se muestra en la esquina superior izquierda se puede cambiar llamando el método iconbitmap, pasándole entre comillas doble el nombre de la imagen que debe estar con la extensión .ico y en el mismo lugar donde se tiene el programa. Por ejemplo se creo un icono con el nombre de form.ico.
from tkinter import * raiz = Tk() raiz.title("Primera Ventana") #Cambiar el nombre de la ventana raiz.geometry("520x480") #Configurar tamaño raiz.iconbitmap("form.ico") #Cambiar el icono raiz.mainloop()
Ejecutamos:
Existe el método llamado config, el cual nos permite configurar múltiples aspectos de la ventana, y otros elementos.
Para cambiar el color de fondo le pasamos como parámetros las letras bg seguidas de un igual y dentro de comillas dobles, el color en inglés o en formato hexadecimal. Las letras bg vienen de la palabra background.
from tkinter import * raiz = Tk() raiz.title("Primera Ventana") #Cambiar el nombre de la ventana raiz.geometry("520x480") #Configurar tamaño raiz.iconbitmap("form.ico") #Cambiar el icono raiz.config(bg="blue") #Cambiar color de fondo raiz.mainloop()
Ejecutamos:
También existe otra propiedad importante en las ventanas de tkinter, esta propiedad es para permitir que el usuario pueda manipular el ancho y el alto de la ventana
Vamos a agregar la el siguiente metodo a nuestro código, a la instancia que llamamos raiz le agregaremos el metodo resizable:
from tkinter import * raiz = Tk() raiz.title("Primera Ventana") #Cambiar el nombre de la ventana raiz.geometry("520x480") #Configurar tamaño raiz.iconbitmap("form.ico") #Cambiar el icono raiz.config(bg="blue") #Cambiar color de fondo raiz.resizable(0,0) raiz.mainloop()
Si ejecutas el programa, veras que ahora no podras hacer la ventana más pequeña o más grande. En pocas palabras hemos prohibido esto para que nuestro programa solo utilice la configuración de tamaño que le hemos dicho dentro del código python.
El metodo resizable, recibe 2 argumentos del tipo booleano numerico donde el primer argumento pertenece al ancho y el segundo al largo.
➡ ¡Excelente! Con lo aprendido en este modulo podemos crear ventanas personalizadas para nuestras aplicaciones en python. Aprende mucho mas con nuestro curso de Interfaz Gráfica con TKinter:
[…] Curso de Interfaz Gráfica con TKinter, 2º clase […]
muy bueno!!! da gusto
Como hago para condicionar un botón en PYTHON, que para ser ejecutado se tenga que colocar una clave???
Estoy desarrollando un proyecto en Python , y me he encontrado con un problema con las bases de datos, si me pueden ayudar a resolverlo, el problema consiste en que tengo varias ventanas hijas dentro de una ventana padre, estas ventanas hijas corren perfectamente con sus bases de datos cuando están independientes, pero al momento de ingresarlas a depender de una ventana padre, las bases de datos de las ventanas hijas ya no responden, solo los que estan ingresados en los Text().
Gracias.
Hola Jose, gracias por comentar igual hay alguien que te puede aconsejar.
hola