PyGTK-ToggleButtonクラス

ToggleButtonウィジェットは2つの状態を持つgtk.Buttonです— pressed or active (またはオン)状態と normal or inactive (or off)状態。ボタンが押されるたびに、状態が切り替わります。ToggleButtonの状態は、set_active()メソッドによってプログラムで変更することもできます。ボタンの状態を切り替えるために、toggled()メソッドも使用できます。

gtk.ToggleButtonクラスには次のコンストラクターがあります-

gtk.ToggleButton(label = None, use_underline = True)

ここで、ラベルはボタンに表示されるテストです。use_underlineプロパティ(Trueの場合)は、テキスト内の下線が次の文字に下線を付けてニーモニックアクセラレータに使用する必要があることを示します。

gtk.ToggleButtonクラスの重要なメソッドのいくつかを次の表に示します。

set_active() これにより、 active 値へのプロパティ True (アクティブまたは押されているかオン)または False (非アクティブまたは通常またはオフ)
get_active() ボタンの状態を取得します
トグル() これにより、トグルボタンで「トグル」信号が発信されます。

ToggleButtonウィジェットは次のシグナルを発します-

トグル これは、トグルボタンの状態がプログラムで、またはユーザーの操作によって変化したときに発行されます。

以下のコードは、ToggleButtonウィジェットの使用法を示しています。

2つのToggleButtonsウィジェットとLabelウィジェットがVBoxコンテナーに配置されます。Button1によって発行されたトグル信号は、コールバック関数on_toggled()に接続されています。この関数では、Button1の状態がFalseの場合、Button2の状態はTrueに設定され、その逆も同様です。

if self.btn1.get_active() == True:
   self.btn2.set_active(False)
else:
   self.btn2.set_active(True)

ラベルのボタンの瞬間的な状態を表示します。

次のコードを確認してください-

import gtk

 PyApp(gtk.Window):
   
   def __init__(self):
      super(PyApp, self).__init__()
      self.set_title("Toggle Button")
      self.set_default_size(250, 200)
      self.set_position(gtk.WIN_POS_CENTER)
      
      vbox = gtk.VBox()
      self.btn1 = gtk.ToggleButton("Button 1")
      self.btn1.connect("toggled", self.on_toggled)
      self.btn2 = gtk.ToggleButton("Button 2")
      self.lbl = gtk.Label()
      
      vbox.add(self.btn1)
      vbox.add(self.btn2)
      vbox.add(self.lbl)
      self.add(vbox)
      self.connect("destroy", gtk.main_quit)
      self.show_all()
   
   def on_toggled(self, widget, data = None):
      if self.btn1.get_active() == True:
         self.btn2.set_active(False)
      else:
         self.btn2.set_active(True)
         state = "Button1 : "+str(self.btn1.get_active())+" 
         Button2 : "+str(self.btn2.get_active())
         self.lbl.set_text(state)
if __name__ == '__main__':
   PyApp()
   gtk.main()

上記のコードは次の出力を生成します-