Tkinter - CONFIGURAR WIDGETS
En Tkinter los widgets tienen un método .config
mediante el cual podemos modificar sus propiedades.
Todos los widgets tienen unas opciones comunes (o estandar) y otra espefíficas del tipo de widget.
PROPIEDADES COMUNES DE LOS WIDGETS
Algunas de las propiedades comunes a todos los widgets en Tkinter son las siguientes:
COLOR: Todos los widgets tienen las propiedades
background
yforeground
, así comobg
yfg
. A estos parámetros se les puede pasar como valor unstr
como "blue" o un valor hexadecimal que represente un color.TAMAÑO: Todos los widgets tienen las propiedades
width
yheight
que definen su ancho y alto respectivamente.FUENTE: La propiedad
font
debe recibir como valor una tupla en la que se especifican la familia de la fuente de texto, su tamaño y su estilo.- font-family - Tkinter garantiza que las fuentes Times, Courier y Helvetica estén disponibles. La disponibilidad del resto de fuentes dependen de que estén instaladas en el sistema.
- size - El tamaño de la fuente es representado mediante números
int
. - style - Puede tomar los valores normal, bold, roman, italic, underline y overstrike, o una combinación de los mismos, por ejemplo: "bold italic".
ESTADO: La propiedad
state
puede tomar los valores: ACTIVE, NORMAL y DISABLED. A parte del cambio en estilo (por ejemplo, el texto de una etiqueta constate=DISABLED
será de color gris), el estado modifica la funcionalidad del widget. Por ejemplo, un botón desactivado no hará nada si se hace click en él. Si una caja de texto está deshabilitada no podrá escribirse en ella.EXPANSIÓN: Todos los widgets tienen las propiedades
expand
yfill
, pero estas no se configuran en el métodoconfig
del widget, sino en el métodopack
, que es uno de los adiministradores de geometría de Tkinter. Las propiedadesexpand
yfill
hacen que un widget pueda expandirse y llenar todo el espacio posible si la ventana es estirada.BORDE: Puede definirse el borde de un widget gracias a dos propiedades:
relief
- Define el estilo del borde. Puede tomar los siguientes valores:- FLAT
- SUNKEN
- RAISED
- GROOVE
- SOLID
- RIDGE
borderwidth
- Define el ancho del borde. Su forma abreviada esbd
.
CURSOR: La propiedad
cursor
define que tipo de cursor se debe mostrar cuando este pasa por encima de un determinado widget. Algunos de los valores que puede tomar son: gumby, watch, pencil, cross y hand2. Ejemplo:widget.config(cursor="watch")
PADDING: Las propiedades
padx
ypady
definen el espacio vacío que debe haber entre el borde del widget y su contenido (texto u otros widgets), en sentido horizontal y vertical respectivamente.
COLOR: foreground
(fg
) y background
(bg
)
Partiendo del siguiente ejemplo:
from tkinter import *
root = Tk()
label = Label(text="Hola")
label.pack(expand=True, fill=BOTH)
root.mainloop()
Lo ejecutamos (he expandido un poco el formulario para que se vea mejor):
Mediante el método label.config
vamos a configurar el color del texto (foreground
) y el color de fondo de la etiqueta (background
):
from tkinter import *
root = Tk()
label = Label(text="Hola")
label.config(
foreground="yellow",
background="black"
)
label.pack(expand=True, fill=BOTH)
root.mainloop()
Ahora el programa luce así (de nuevo he expandido un poco el formulario):
Algunos de los parámetros del método config
tienen una versión abreviada de los mismos. Por ejemplo, en lugar de foreground
y background
podríamos haber utilizado fg
y bg
respectivamente:
from tkinter import *
root = Tk()
label = Label(text="Hola")
label.config(fg="yellow", bg="black")
label.pack(expand=True, fill=BOTH)
root.mainloop()
TAMAÑO: width
y height
En el ejemplo anterior he tenido que expandir el formulario para que no fuese demasiado pequeño, ya que si no se especifíca un tamaño inicial de widget, este toma el mínimo tamaño necesario para mostrar su contenido.
El tamaño inicial de un widget puede configurarse mediante sus atributos width
y height
:
from tkinter import *
root = Tk()
label = Label(text="Hola")
label.config(
fg="yellow", bg="black",
width=25, height=5
)
label.pack(expand=True, fill=BOTH)
root.mainloop()
NOTA: El tamaño del widget puede modificarse en cualquier punto del programa (no solamente el tamaño inicial).
FUENTE: font
El tipo, tamaño y estilo de fuente pueden configurarse mediante el parámetro font
en el método config
:
from tkinter import *
root = Tk()
label = Label(text="Hola")
label.config(
fg="yellow", bg="black",
width=25, height=5,
font=("Arial", 18, "bold")
)
label.pack(expand=True, fill=BOTH)
root.mainloop()
Ejecutamos el programa y comprobamos que ahora efectivamente la fuente es "Arial", el tamaño de letra es mayor que antes y el texto se muestra en negrita:
Se puede apreciar que el formulario se ha expandido. Esto se debe a que, a pesar de haber definido las dimensiones iniciales, hemos aumentado el tamaño de fuente y el administrador de geometría (.pack
) considera que es mas importante mostrar el texto del Label
que los valores para el ancho y alto iniciales.
ESTADO: state
Define es estado del widget, que puede ser: ACTIVE, NORMAL o DISABLED.
Este parámetro es mucho mas util en botones que en etiquetas, ya que permite que en cierto momento al hacer click en un botón este no responda.
Establecemos state en DISABLED:
from tkinter import *
root = Tk()
label = Label(text="Hola")
label.config(
fg="yellow", bg="black",
width=25, height=5,
font=("Arial", 18, "bold"),
state=DISABLED
)
label.pack(expand=True, fill=BOTH)
root.mainloop()
El resultado es que el texto de la etiqueta se torna color gris (pierde el color que establecimos previamente). Puede utilizarse para señalar que algo no funciona, por ejemplo.