PyGTK - SpinButton-Klasse

Das SpinnButton-Widget, oft als Spinner bezeichnet, ist ein gtk.Entry-Widget mit Aufwärts- und Abwärtspfeilen auf der rechten Seite. Ein Benutzer kann einen numerischen Wert direkt eingeben oder mit Aufwärts- und Abwärtspfeilen erhöhen oder verringern. Die Klasse gtk.SpinButton wird von der Klasse gtk.Entry geerbt. Es wird ein gtk.Adjustment-Objekt verwendet, mit dem der Bereich und der Schritt des numerischen Werts im Spinner eingeschränkt werden können.

Das SpinButton-Widget wird mit dem folgenden Konstruktor erstellt:

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

Hier steht adj für die gtk.Adjustment object controlling range, climb_rate ist ein Beschleunigungsfaktor und die Anzahl der Dezimalstellen, die durch Ziffern angegeben werden.

Die Klasse gtk.SpinButton verfügt über die folgenden Methoden:

  • SpinButton.set_adjustment () - Hiermit wird die Eigenschaft "adjust" festgelegt.

  • SpinButton.set_digits () - Hiermit wird die Eigenschaft "digits" auf den Wert gesetzt, um die Anzahl der Dezimalstellen zu bestimmen, die vom Spinbutton angezeigt werden sollen.

  • SpinButton.set_increments (Schritt, Seite) - Hiermit wird der Schrittwert festgelegt, auf den bei jedem Drücken der linken Maustaste ein Inkrement angewendet wird, und der Seitenwert, der bei jedem Drücken der mittleren Maustaste inkrementiert wird.

  • SpinButton.set_range () - Hiermit werden die minimal und maximal zulässigen Werte für Spinbutton festgelegt.

  • SpinButton.set_value () - Hiermit wird die Drehschaltfläche programmgesteuert auf einen neuen Wert gesetzt.

  • SpinButton.update_policy () - Die gültigen Werte sind gtk.UPDATE_ALWAYS und gtk.UPDATE_VALID

  • SpinButton.spin (Richtung, Inkrement = 1) - Hiermit wird der Spinner-Wert in der angegebenen Richtung erhöht oder verringert.

Das Folgende sind die vordefinierten Richtungskonstanten -

gtk.SPIN_STEP_FORWARD vorwärts durch step_increment
gtk.SPIN_STEP_BACKWARD rückwärts durch step_increment
gtk.SPIN_PAGE_FORWARD vorwärts durch step_increment
gtk.SPIN_PAGE_BACKWARD rückwärts durch step_increment
gtk.SPIN_HOME zum Minimalwert bewegen
gtk.SPIN_END zum Maximalwert bewegen
gtk.SPIN_USER_DEFINED Inkrement zum Wert hinzufügen
  • SpinButton.set_wrap () - Wenn Wrap True ist, wird der Wert der Drehschaltfläche bis zur entgegengesetzten Grenze umgebrochen, wenn die obere oder untere Grenze des Bereichs überschritten wird.

Das gtk.SpinButton-Widget sendet die folgenden Signale aus:

Wert ändern Dies wird ausgegeben, wenn der Spinbutton-Wert durch Tastaturaktion geändert wird
Eingang Dies wird ausgegeben, wenn sich der Wert ändert.
Ausgabe Dies wird ausgegeben, wenn der Spinbutton-Anzeigewert geändert wird. Kehrt zurückTrue Wenn der Handler den Text erfolgreich festlegt und keine weitere Verarbeitung erforderlich ist.
Wert geändert Dies wird ausgegeben, wenn eine der Einstellungen geändert wird, die die Anzeige des Drehknopfs ändern.
eingewickelt Dies wird direkt ausgegeben, nachdem der Spinbutton von seinem Maximal- auf Minimalwert oder umgekehrt gewickelt wurde.

Beispiel

Das folgende Beispiel erstellt eine einfache Date Selectormithilfe von drei SpinButton-Widgets. Die Tagesauswahl wird auf ein Anpassungsobjekt angewendet, um den Wert zwischen 1 und 31 zu beschränken. Der zweite Selektor ist für die Anzahl der Monate 1–12. Der dritte Selektor wählt den Jahresbereich 2000–2020 aus.

Beachten Sie den Code -

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

Bei der Ausführung erzeugt der obige Code die folgende Ausgabe: