PyGTK-SpinButtonクラス

スピナーと呼ばれることの多いSpinnButtonウィジェットは、右側に上下の矢印が付いたgtk.Entryウィジェットです。ユーザーは、数値を直接入力するか、上下の矢印を使用してインクリメントまたはデクリメントすることができます。gtk.SpinButtonクラスは、gtk.Entryクラスから継承されます。スピナーの数値の範囲とステップを制限できるgtk.Adjustmentオブジェクトを使用します。

SpinButtonウィジェットは、次のコンストラクターを使用して作成されます-

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

ここで、adjは gtk.Adjustment object controlling rangeclimb_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ウィジェットは次のシグナルを発します-

値の変更 これは、キーボードの操作によってスピンボタンの値が変更されたときに発生します
入力 これは、値が変更されたときに発行されます。
出力 これは、スピンボタンの表示値が変更されたときに発生します。戻り値True ハンドラーがテキストを正常に設定し、それ以上の処理が必要ない場合。
値が変更されました これは、スピンボタンの表示を変更する設定のいずれかが変更されたときに発生します。
包まれた これは、スピンボタンが最大値から最小値に、またはその逆にラップした直後に発行されます。

次の例は、単純な Date Selector3つのSpinButtonウィジェットを使用します。Day Selectorには、値を1〜31に制限するための調整オブジェクトが適用されます。2番目のセレクターは、1〜12か月の数用です。3番目のセレクターは、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()

実行すると、上記のコードは次の出力を生成します-