📜  PyGTK-SpinButton类

📅  最后修改于: 2020-11-08 08:03:39             🧑  作者: Mango


SpinnButton窗口小部件(通常称为Spinner)是一个gtk.Entry窗口小部件,其右侧有上下箭头。用户可以直接在其中键入数字值,也可以使用向上和向下箭头递增或递减。 gtk.SpinButton类是从gtk.Entry类继承的。它使用gtk.Adjustment对象,可以限制微调器中数值的范围和步长。

SpinButton小部件使用以下构造函数创建-

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

这里的adj代表gtk.Adjustment对象的控制范围climb_rate是加速度因数,由数字指定的小数位数。

gtk.SpinButton类具有以下方法-

  • SpinButton.set_adjustment()-设置“ 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,crement = 1)-这将在指定方向上增加或减少Spinner的值。

以下是预定义的方向常数-

gtk.SPIN_STEP_FORWARD forward by step_increment
gtk.SPIN_STEP_BACKWARD backward by step_increment
gtk.SPIN_PAGE_FORWARD forward by step_increment
gtk.SPIN_PAGE_BACKWARD backward by step_increment
gtk.SPIN_HOME move to minimum value
gtk.SPIN_END move to maximum value
gtk.SPIN_USER_DEFINED add increment to the value
  • SpinButton.set_wrap()—如果wrap为True,则超出范围的上限或下限时,旋转按钮值将绕到相反的限制。

gtk.SpinButton小部件发出以下信号-

change-value This is emitted when the spinbutton value is changed by keyboard action
input This is emitted when the value changes.
output This is emitted when the spinbutton display value is changed. Returns True if the handler successfully sets the text and no further processing is required.
value-changed This is emitted when any of the settings that change the display of the spinbutton is changed.
wrapped This is emitted right after the spinbutton wraps from its maximum to minimum value or vice-versa.

下面的示例使用三个SpinButton小部件构造一个简单的Date Selector 。将日期选择器应用于调整对象以将值限制在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()

执行后,以上代码将产生以下输出-

SpinButton演示