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 -