Pygtk 简明教程

PyGTK - ToggleButton Class

ToggleButton 小部件是带有两个状态的 gtk.Button — pressed or active (或打开)状态和 normal or inactive (or off) 状态。每次按下按钮时,状态都会交替改变。还可以通过 set_active() 方法以编程方式改变 ToggleButton 的状态。若要切换按钮状态,也可以使用 toggled() 方法。

gtk.ToggleButton 类有以下构造函数 −

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

此处,label 是要显示在按钮上的文本。use_underline 属性为 True 时,文本中的下划线表示下一个字符必须加上下划线并用作快捷键加速器。

gtk.ToggleButton 类的部分重要方法如下表所示 -

set_active()

这将 active 属性设置为 True (活动或按下或打开,或 False (非活动或正常或关闭)

get_active()

这将检索按钮状态

toggled()

这将在切换按钮上发出 "toggled" 信号。

ToggleButton 小部件发出下列信号 -

Toggled

当切换按钮状态通过编程方式或用户操作而更改时,会发出此信号。

下面给出的代码演示了 ToggleButton 小部件的使用。

两个 ToggleButtons 和 Label 小部件置于 VBox 容器中。Button1 发出的 toggled 信号连接到一个回调函数 on_toggled() 中。在此函数中,如果 Button1 的状态为 False 则将 Button2 的状态设置成 True,反之亦然。

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

它将在 Label 上显示按钮的瞬时状态。

Example

观察以下代码 -

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()

以上代码会生成以下输出 −

toggle button