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()
После выполнения приведенный выше код выдаст следующий результат: