PyGTK - Clase SpinButton
El widget SpinnButton, a menudo llamado Spinner, es un widget gtk.Entry con flechas hacia arriba y hacia abajo a su derecha. Un usuario puede ingresar un valor numérico directamente en él o incrementar o disminuir usando flechas hacia arriba y hacia abajo. La clase gtk.SpinButton se hereda de la clase gtk.Entry. Utiliza un objeto gtk.Adjustment con el que se puede restringir el rango y el paso del valor numérico en la ruleta.
El widget SpinButton se crea utilizando el siguiente constructor:
sp = gtk.SpinButton(adj, climb_rate, digits)
Aquí, adj representa el gtk.Adjustment object controlling range, climb_rate es un factor de aceleración y el número de decimales especificado por dígitos.
La clase gtk.SpinButton tiene los siguientes métodos:
SpinButton.set_adjustment (): establece la propiedad de "ajuste".
SpinButton.set_digits (): establece la propiedad "dígitos" en el valor para determinar el número de posiciones decimales que se mostrarán mediante el botón giratorio.
SpinButton.set_increments (paso, página): esto establece el valor de paso que tiene un incremento aplicado por cada pulsación del botón izquierdo del mouse y el valor de la página que se aplica como incremento por cada pulsación del botón central del mouse.
SpinButton.set_range (): establece los valores mínimos y máximos permitidos para el botón giratorio.
SpinButton.set_value (): esto establece el botón de giro en un nuevo valor mediante programación.
SpinButton.update_policy (): los valores válidos son gtk.UPDATE_ALWAYS y gtk.UPDATE_VALID
SpinButton.spin (dirección, incremento = 1): esto incrementa o reduce el valor de Spinner en la dirección especificada.
Las siguientes son las constantes de dirección predefinidas:
gtk.SPIN_STEP_FORWARD | adelante por incremento_paso |
gtk.SPIN_STEP_BACKWARD | hacia atrás por incremento_paso |
gtk.SPIN_PAGE_FORWARD | adelante por incremento_paso |
gtk.SPIN_PAGE_BACKWARD | hacia atrás por incremento_paso |
gtk.SPIN_HOME | pasar al valor mínimo |
gtk.SPIN_END | pasar al valor máximo |
gtk.SPIN_USER_DEFINED | agregar incremento al valor |
SpinButton.set_wrap (): si wrap es True, el valor del botón giratorio se ajusta al límite opuesto cuando se excede el límite superior o inferior del rango.
El widget gtk.SpinButton emite las siguientes señales:
valor de cambio | Esto se emite cuando el valor del botón giratorio se cambia mediante la acción del teclado |
entrada | Se emite cuando cambia el valor. |
salida | Esto se emite cuando se cambia el valor de visualización del botón giratorio. DevolucionesTrue si el controlador establece correctamente el texto y no se requiere procesamiento adicional. |
valor cambiado | Esto se emite cuando se cambia cualquiera de las configuraciones que cambian la visualización del botón giratorio. |
envuelto | Esto se emite justo después de que el botón giratorio pasa de su valor máximo a mínimo o viceversa. |
Ejemplo
El siguiente ejemplo construye un simple Date Selectormediante el uso de tres widgets SpinButton. Al selector de día se le aplica un objeto de ajuste para restringir el valor entre 1 y 31. El segundo selector es para el número de meses 1-12. El tercer selector selecciona el rango de años 2000-2020.
Observe el código -
import gtk
class PyApp(gtk.Window):
def __init__(self):
super(PyApp, self).__init__()
self.set_title("SpinButton Demo")
self.set_size_request(300, 200)
self.set_position(gtk.WIN_POS_CENTER)
self.set_border_width(20)
vbox = gtk.VBox(False, 5)
hbox = gtk.HBox(True, 3)
lbl1 = gtk.Label("Date")
hbox.add(lbl1)
adj1 = gtk.Adjustment(1.0, 1.0, 31.0, 1.0, 5.0, 0.0)
spin1 = gtk.SpinButton(adj1, 0, 0)
spin1.set_wrap(True)
hbox.add(spin1)
lbl2 = gtk.Label("Month")
hbox.add(lbl2)
adj2 = gtk.Adjustment(1.0, 1.0, 12.0, 1.0, 5.0, 0.0)
spin2 = gtk.SpinButton(adj2, 0, 0)
spin2.set_wrap(True)
hbox.add(spin2)
lbl3 = gtk.Label("Year")
hbox.add(lbl3)
adj3 = gtk.Adjustment(1.0, 2000.0, 2020.0, 1.0, 5.0, 0.0)
spin3 = gtk.SpinButton(adj3, 0, 0)
spin3.set_wrap(True)
hbox.add(spin3)
frame = gtk.Frame()
frame.add(hbox)
frame.set_label("Date of Birth")
vbox.add(frame)
self.add(vbox)
self.connect("destroy", gtk.main_quit)
self.show_all()
PyApp()
gtk.main()
Tras la ejecución, el código anterior producirá el siguiente resultado: