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.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 小部件发出以下信号 -
    change-value 当通过键盘操作更改旋转按钮值时会发出此消息
    input 当值改变时发出。
    output 当微调按钮显示值更改时会发出此消息。退货True如果处理程序成功设置文本并且不需要进一步处理。
    value-changed 当更改旋转按钮显示的任何设置发生更改时,将发出此消息。
    wrapped 这是在旋转按钮从最大值变为最小值之后立即发出的,反之亦然。
  • 例子

    下面的例子构造了一个简单的Date Selector通过使用三个 SpinButton 小部件。日选择器应用于调整对象以将值限制在 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()
    
    执行后,上述代码将产生以下输出 -
    旋转按钮演示