PyGTK - Classe SpinButton

Il widget SpinnButton, spesso chiamato Spinner è un widget gtk.Entry con frecce su e giù alla sua destra. Un utente può digitare un valore numerico direttamente al suo interno o aumentare o diminuire utilizzando le frecce su e giù. La classe gtk.SpinButton viene ereditata dalla classe gtk.Entry. Utilizza un oggetto gtk.Adjustment con il quale è possibile limitare l'intervallo e il passo del valore numerico nello spinner.

Il widget SpinButton viene creato utilizzando il seguente costruttore:

sp = gtk.SpinButton(adj, climb_rate, digits)

Qui, adj rappresenta il gtk.Adjustment object controlling range, climb_rate è un fattore di accelerazione e il numero di decimali specificato da cifre.

La classe gtk.SpinButton ha i seguenti metodi:

  • SpinButton.set_adjustment () - Imposta la proprietà "regolazione".

  • SpinButton.set_digits () - Questo imposta la proprietà "digits" sul valore per determinare il numero di posizioni decimali che devono essere visualizzate dallo spinbutton.

  • SpinButton.set_increments (step, page) - Questo imposta il valore del passo che ha un incremento applicato per ogni pressione del pulsante sinistro del mouse e il valore della pagina che è l'incremento applicato per ogni pressione del pulsante centrale del mouse.

  • SpinButton.set_range () - Imposta i valori minimi e massimi consentiti per spinbutton.

  • SpinButton.set_value (): imposta il pulsante di selezione su un nuovo valore a livello di codice.

  • SpinButton.update_policy () - I valori validi sono gtk.UPDATE_ALWAYS e gtk.UPDATE_VALID

  • SpinButton.spin (direction, increment = 1) - Questo incrementa o decrementa il valore di Spinner nella direzione specificata.

Le seguenti sono le costanti di direzione predefinite:

gtk.SPIN_STEP_FORWARD avanti di step_increment
gtk.SPIN_STEP_BACKWARD indietro di step_increment
gtk.SPIN_PAGE_FORWARD avanti di step_increment
gtk.SPIN_PAGE_BACKWARD indietro di step_increment
gtk.SPIN_HOME passare al valore minimo
gtk.SPIN_END passare al valore massimo
gtk.SPIN_USER_DEFINED aggiungere incremento al valore
  • SpinButton.set_wrap () - Se wrap è True, il valore del pulsante di selezione va a capo al limite opposto quando il limite superiore o inferiore dell'intervallo supera.

Il widget gtk.SpinButton emette i seguenti segnali:

valore di cambiamento Viene emesso quando il valore del pulsante di selezione viene modificato dall'azione della tastiera
ingresso Viene emesso quando il valore cambia.
produzione Viene emesso quando il valore di visualizzazione del pulsante di selezione viene modificato. ritornaTrue se il gestore imposta correttamente il testo e non sono necessarie ulteriori elaborazioni.
valore modificato Viene emesso quando viene modificata una qualsiasi delle impostazioni che modificano la visualizzazione del pulsante di selezione.
avvolto Viene emesso subito dopo che il pulsante di selezione si sposta dal valore massimo al valore minimo o viceversa.

Esempio

L'esempio seguente costruisce un semplice Date Selectorutilizzando tre widget SpinButton. Al selettore del giorno viene applicato un oggetto di regolazione per limitare il valore tra 1 e 31. Il secondo selettore è per il numero di mesi 1—12. Il terzo selettore seleziona l'intervallo di anni 2000—2020.

Rispetta il codice -

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()

Al momento dell'esecuzione, il codice precedente produrrà il seguente output: