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)
viajeros.pack(fill=tk.X,expand=True,padx=20, pady=5)
Este es el resultado visual que obtendremos...

