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: