PyGTK - класс SpinButton

Виджет SpinnButton, часто называемый Spinner, представляет собой виджет gtk.Entry со стрелками вверх и вниз справа. Пользователь может ввести числовое значение прямо в него или увеличить или уменьшить, используя стрелки вверх и вниз. Класс gtk.SpinButton унаследован от класса gtk.Entry. Он использует объект gtk.Adjustment, с помощью которого можно ограничить диапазон и шаг числового значения в счетчике.

Виджет SpinButton создается с использованием следующего конструктора -

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

Здесь adj представляет gtk.Adjustment object controlling range, climb_rate - коэффициент ускорения и количество десятичных знаков, определяемое цифрами.

Класс gtk.SpinButton имеет следующие методы:

  • SpinButton.set_adjustment () - устанавливает свойство «регулировки».

  • SpinButton.set_digits () - устанавливает для свойства "digits" значение, определяющее количество десятичных разрядов, отображаемых спин-кнопкой.

  • SpinButton.set_increments (step, page) - устанавливает значение шага, для которого применяется приращение при каждом нажатии левой кнопки мыши, и значение страницы, которое применяется при каждом нажатии средней кнопки мыши.

  • SpinButton.set_range () - устанавливает минимальное и максимальное допустимые значения для spinbutton.

  • SpinButton.set_value () - программно устанавливает новое значение для кнопки прокрутки.

  • SpinButton.update_policy () - допустимые значения: gtk.UPDATE_ALWAYS и gtk.UPDATE_VALID.

  • SpinButton.spin (direction, increment = 1) - увеличивает или уменьшает значение Spinner в указанном направлении.

Ниже приведены предварительно определенные константы направления -

gtk.SPIN_STEP_FORWARD вперед на step_increment
gtk.SPIN_STEP_BACKWARD назад на step_increment
gtk.SPIN_PAGE_FORWARD вперед на step_increment
gtk.SPIN_PAGE_BACKWARD назад на step_increment
gtk.SPIN_HOME перейти к минимальному значению
gtk.SPIN_END перейти к максимальному значению
gtk.SPIN_USER_DEFINED добавить приращение к значению
  • SpinButton.set_wrap () - если wrap имеет значение True, значение кнопки прокрутки возвращается к противоположному пределу, когда верхний или нижний предел диапазона превышает.

Виджет gtk.SpinButton излучает следующие сигналы:

изменение стоимости Это излучается, когда значение счетчика изменяется действием клавиатуры.
ввод Это излучается при изменении значения.
вывод Это излучается при изменении значения отображения вращающейся кнопки. ВозвратTrue если обработчик успешно устанавливает текст и дальнейшая обработка не требуется.
значение изменено Это излучается, когда изменяется какая-либо из настроек, которые изменяют отображение вращающейся кнопки.
завернутый Это излучается сразу после того, как вращающаяся кнопка переходит от максимального к минимальному значению или наоборот.

пример

В следующем примере создается простой Date Selectorс помощью трех виджетов SpinButton. Селектор дня применяется к объекту Adjustment для ограничения значения от 1 до 31. Второй селектор предназначен для количества месяцев 1–12. Третий селектор выбирает период 2000–2020 годов.

Соблюдайте код -

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

После выполнения приведенный выше код выдаст следующий результат: