miércoles, 22 de mayo de 2024

Interfaz. Python.

TkInter. Spinbox.

Spinbox es similar al control Entry, pero limitado a contenido numérico e incorporando dos botones para incrementar o disminuir este contenido contenido

La configuración de un spinbox, como la de otros controles tKinter, se desarrolla en dos fases: configuración y posicionamiento.

En la fase de configuración... 

  • identificaremos el objeto como perteneciente al conjunto de objetos tKinter...

elementos = tk.Spinbox()

  • ... e incluiremos los parámetros que describen y configuran el componente, el primero de ellos el contenedor al que pertenece (ventana)

elementos=tk.Spinbox(ventana)

Pero con esto no hemos configurado aun el spinbox, ya que necesitamos al menos tres parámetros básicos para definir su comportamiento: el valor de inicio, el de finalización y el de paso o incremento:

elemento=tk.Spinbox(ventana,

 from_=10, to=30

increment=0.5)  -> El incremento puede obviarse, asumiendo                                            entonces un incremento 1+1

Si queremos evitar que el usuario modifique el contenido del spinbox (es posible hacerlo por la similitud de su comportamiento respecto a un entry), deberemos usar el parámetro state con valor readonly (sólo lectura)

elemento=tk.Spinbox(ventana,

 from_=10, to=30

increment=0.5

 state='readonly')

Podemos asociar un objeto variable al componente (vg. textvariable=num_via) así como una función mediante command (command=nombre_de_funcion)

Finalmente, para evitar errores de funcionamiento cuando el usuario trata de forzar el valor de base o el superior, utilizaremos la instrucción warp con valor True (warp=True), con lo que provocamos que, en lugar de permanecer sin modificar el valor del límite, cuando se trate de forzar el mínimo el contador se sitúe en el máximo y viceversa.

En resumen, la configuración de un Spinbox podría ser la siguiente:

viajeros = tk.Spinbox(ventana, from_=1, to=20, increment=0.5,                    state='readonly', wrap=True, textvariable=num_via)

El posicionamiento del componente se rige por las normas generales que, a su vez, están condicionadas por el modelo de posicionamiento que se elija. Por ejemplo, para .pack()

viajeros.pack(fill=tk.X,expand=True,padx=20, pady=5)

Este es el resultado visual que obtendremos...


 ... y este el archivo original.