miércoles, 22 de mayo de 2024

Interfaz. Python.

TkInter. Combobox


Próximo a la entrada (Entry) en cuanto a objetivo y función, el Combobox es un componente que permite al usuario elegir uno de los elementos de la lista de opciones del widget.


En esta entrada veremos el modo básico de implementar Combobox en un formulario siguiendo los dos procedimientos básicos: configuración y posicionamiento, aunque este último sólo con un objetivo funcional, que no didáctico.

Esta es la apariencia del formulario resultante del script que sirve de base, pobre de solemnidad, pero suficiente para que nos entendamos...


Observa el parecido con un Entry, siendo de hecho, la única diferencia observable (y después comprobable también en cuanto funcionamiento) la presencia de una pequeña flecha orientada hacia abajo y posicionada en el extremo derecho de la caja. 

Como seguramente ya sabes, haciendo clic en esta flechita se despliega una lista de opciones de las cuales el usuario selecciona una, no pudiendo introducir otros contenidos que los disponibles en esta lista. Este es el funcionamiento esperable que se logra del siguiente modo (1):

combo = ttk.Combobox(
    state="readonly",
    values=["Python", "C", "C++", "Java"])
combo.place(x=50, y=50)

  • Primero asociamos el componente con el tipo de objeto perteneciente a TkInter
combo = ttk.Combobox()

  • Después, ya dentro del paréntesis, establecemos que no es posible al usuario introducir datos propios, indicando que este componente es sólo de lectura (2):

 state="readonly",

  • Finalmente establecemos la lista de opciones utilizando para ello una lista asociada al atributo valores (values) (3)
values=["Python", "C", "C++", "Java"])

Nos falta aprender muchas cosas sobre el uso de combobox, especialmente cómo accedemos a su contenido, pero esto queda para una entrada posterior. Por ahora, si lo deseas, puedes jugar con el código de este script para aprender a crearlos. También te puede ser útil esta página para saber más sobre este widget.

NOTAS

(1) Nos olvidarnos de la última línea ya que, como sabemos, constituye el procedimiento para posicionar el componente.

(2) Este es el comportamiento esperado, pero si queremos que el usuario puede incluir opciones no previstas, podemos eliminar este atributo.

(3) Observa el uso de corchetes para delimitar la lista y de comas y comillas para delimitar cada elemento. La similitud de Combobox con Entry se concreta en este caso, con que los valores de la lista son siempre asimilados a texto (de ahí que vayan entrecomillados), por lo que así será tratado cualquier valor aparentemente numérico que utilicemos.

No hay comentarios:

Publicar un comentario

Comenta esta entrada