PyGTK - klasa SpinButton
Widżet SpinnButton, często nazywany Spinner, to widżet gtk.Entry ze strzałkami w górę iw dół po prawej stronie. Użytkownik może bezpośrednio wpisać wartość liczbową lub zwiększyć lub zmniejszyć za pomocą strzałek w górę iw dół. Klasa gtk.SpinButton jest dziedziczona z klasy gtk.Entry. Używa obiektu gtk.Adjustment, za pomocą którego można ograniczyć zakres i krok wartości numerycznej w pokrętle.
Widżet SpinButton jest tworzony przy użyciu następującego konstruktora -
sp = gtk.SpinButton(adj, climb_rate, digits)
Tutaj adj reprezentuje gtk.Adjustment object controlling range, climb_rate jest współczynnikiem przyspieszenia i liczbą miejsc po przecinku określoną cyframi.
Klasa gtk.SpinButton ma następujące metody -
SpinButton.set_adjustment () - ustawia właściwość „Adjustment”.
SpinButton.set_digits () - ustawia właściwość „cyfry” na wartość określającą liczbę miejsc dziesiętnych wyświetlanych przez przycisk spinbutton.
SpinButton.set_increments (step, page) - ustawia wartość kroku, który ma przyrost zastosowany dla każdego naciśnięcia lewego przycisku myszy i wartość strony, która jest zwiększana dla każdego naciśnięcia środkowego przycisku myszy.
SpinButton.set_range () - ustawia minimalne i maksymalne dopuszczalne wartości spinbutton.
SpinButton.set_value () - programowo ustawia przycisk pokrętła nową wartość.
SpinButton.update_policy () - prawidłowe wartości to gtk.UPDATE_ALWAYS i gtk.UPDATE_VALID
SpinButton.spin (direction, Increment = 1) - Powoduje zwiększenie lub zmniejszenie wartości Spinner w określonym kierunku.
Poniżej przedstawiono predefiniowane stałe kierunku -
gtk.SPIN_STEP_FORWARD | naprzód przez step_increment |
gtk.SPIN_STEP_BACKWARD | wstecz o step_increment |
gtk.SPIN_PAGE_FORWARD | naprzód przez step_increment |
gtk.SPIN_PAGE_BACKWARD | wstecz o step_increment |
gtk.SPIN_HOME | przejdź do wartości minimalnej |
gtk.SPIN_END | przejdź do wartości maksymalnej |
gtk.SPIN_USER_DEFINED | dodać przyrost do wartości |
SpinButton.set_wrap () - Jeśli zawijanie ma wartość True, wartość przycisku pokrętła zawija się do przeciwnego limitu, gdy górna lub dolna granica zakresu przekracza.
Widżet gtk.SpinButton emituje następujące sygnały -
zmiana waluty | Jest to emitowane, gdy wartość przycisku spinbutton zostanie zmieniona przez działanie klawiatury |
Wejście | Jest to emitowane, gdy zmienia się wartość. |
wynik | Jest to emitowane po zmianie wartości wyświetlanej przycisku obrotowego. ZwrotyTrue jeśli program obsługi pomyślnie ustawi tekst i dalsze przetwarzanie nie jest wymagane. |
wartość zmieniona | Jest to emitowane, gdy dowolne z ustawień zmieniających wyświetlanie przycisku pokrętła zostanie zmienione. |
owinięty | Jest on emitowany zaraz po przewinięciu przycisku obrotowego z wartości maksymalnej do minimalnej lub odwrotnie. |
Przykład
Poniższy przykład tworzy prosty plik Date Selectorza pomocą trzech widżetów SpinButton. Selektor dnia jest stosowany jako obiekt dopasowania w celu ograniczenia wartości w zakresie od 1 do 31. Drugi selektor dotyczy liczby miesięcy 1–12. Trzeci selektor wybiera rok 2000–2020.
Obserwuj kod -
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()
Po wykonaniu powyższego kodu wygeneruje następujący wynik -