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: