top of page
Foto del escritorJaime Franco Jimenez

Interfaz gráfica Tkinter

Es la interfaz por defecto de Python.


Tk/Tcl es parte de Python, y, proporciona un conjunto de herramientas para administrar ventanas, el cual podemos usar con Tkinter, los archivos que terminan en .tm, son módulos Tcl.


Tcl es un lenguaje de programación interpretado y dinámico, podemos agregar comandos personalizados, cada interprete tiene su cola de eventos.


Tk es un paquete Tcl que permite manipular widget en la GUI, los widgets son personalizables.


La clase Tk generalmente se usa con los valores predeterminados.


Tkinter es un conjunto de envoltorios que implementan los widgets Tk como clases de Python.


Hay muchas otras bibliotecas GUI (Interfaz gráfica de usuario).


La mayor parte de las aplicaciones necesitaran el módulo base tkinter, así como también el módulo tkinter.ttk, el cual entrega el conjunto de widget temáticos y la API correspondiente.


Podemos usar clases para crear interfaces, siendo lo más recomendable.


Vamos a empezar nuestro ejemplo, importando ambos módulos.

Creamos una variable llamada raíz, aunque podemos usar otro nombre, siempre que se respeten las palabras reservadas, y, nos traemos la clase Tk, que devuelve un nuevo widget, los widgets se organizan en jerarquías, los widgets tienen opciones de configuración los cuales modifican su apariencia y comportamiento.


Ponemos una última línea, como sigue:


Mainloop() muestra todo en pantalla y responde a la entrada del usuario hasta que el programa termina.


Pulsamos F5 y de momento nos muestra la interfaz gráfica.


Para configurar el título de la interfaz, usamos title dentro de raíz, para ello, ponemos:


Pulsamos F5, redimensionamos, y, vemos el título.


Para cambiar el color de la pantalla, usamos config, donde usamos el argumento “bg”, es la abreviatura de background, y, ponemos el color en inglés.


Pero, cada vez que queramos que aparezca la interfaz, debemos de hacer desde dentro de Python, pero, si n queremos abrir Python, debemos de cambiar la extensión del archivo a .pyw, “w” de Windows.


Vamos a ver que es frame, pues, es parte de la interfaz, es donde, por ejemplo, podemos poner widgets, para agregar un frame, creamos una variable e igualamos a frame().


Si no damos unas dimensiones a frame1, dicho frame no aparecerá, por lo que añadimos una línea, usamos config y los argumentos width y height, y, damos un valor.


Damos un color de fondo, decir que, si no ponemos una dimensión, cosa que hemos hecho en el paso anterior, el color no tendrá efecto, para ello, usamos config, dentro de los paréntesis, usamos bg e igualamos entra comillas dobles a un color en inglés.


Lo siguiente es empaquetar, el empaquetador se usa para controlar dónde se colocará el widget.


Tenga en cuenta que los widgets no aparecen hasta que su geometría no se haya especificado.


Un objeto gráfico solo aparece después que, por ejemplo, se le haya aplicado el método pack() del empaquetador.


En la siguiente línea empaquetamos frame, como sigue:


El empaquetador tiene diferentes argumentos, uno de ellos es expand, que es un valor booleano, 0 o 1, como sigue:


¿Qué ha pasado?

Pues, frame1 se ha centrado.


0 es el valor predeterminado.


Tenemos los argumentos left, right, top, bottom.


Quitamos la línea de expand, y, dentro de los paréntesis, ponemos side, de lado, e igualamos a left.


Frame1 se ajusta a la izquierda.


Si ponemos right, se ajusta a la derecha, si ponemos top, se ajusta a la parte superior, si ponemos botton, se ajusta a la parte inferior, pero, centrado, igual que top.


Tenemos el argumento anchor, que índica donde se debe de colocar el empaquetador, norte (n), sur(s), este (e), y, oeste (w), a la línea de pack, donde hemos colocado frame1 a la izquierda, añadimos el argumento anchor, e, igualamos a “n”.


Frame1 se coloca a la izquierda, y, a la parte superior.


Cambiamos “n” por “s”, frame1 se coloca a la izquierda a la parte inferior.


Cambiamos “s” por “e”, frame1 se coloca a la izquierda y al centro.


Tenemos el argumento fill, que puede tener los valores “x”, “y”, “both”, y, “none”.


Vamos a añadir fill e igualamos a x.


Conseguimos que frame1 se ajuste a la ventana horizontalmente desde la parte superior hasta el centro.


Si cambiamos a “y”, debería de redimensionarse verticalmente, pero esto no ocurre, esto es debido hay que añadirle el argumento expand e igualar a 1.


Con “both”, frame1 se ajusta a la ventana, se ajusta tanto vertical como horizontalmente, pero sigue acompañado de expand.


Con ”none”, aparece frame1 centrado.          


Para cambiar el estilo del borde, usamos el argumento relief de config, cuyos valores pueden ser  "raised", "sunken", "flat", "groove", y "ridge", pero, primero debemos de dar un formato a los bordes, para ello, usamos “bd” de bordes e igualamos a un valor.


Si queremos cambiar el cursor de frame1 por una mano, usamos cursor junto con la cadena hand2.


Muchas de estas opciones de config que hemos aplicado a frame1, la podemos aplicar a la raíz.



Miguel Angel Franco

0 visualizaciones0 comentarios

Bình luận


bottom of page