PyGTK - Classe ToggleButton

O widget ToggleButton é um gtk.Button com dois estados - um pressed or active (ou em) estado e um normal or inactive (or off)Estado. Cada vez que o botão é pressionado, o estado se alterna. O estado do ToggleButton também pode ser alterado programaticamente pelo método set_active (). Para mudar o estado do botão, o método toggled () também está disponível.

A classe gtk.ToggleButton tem o seguinte construtor -

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

Aqui, o rótulo é o teste a ser exibido no botão. A propriedade use_underline, se True, um sublinhado no texto indica que o próximo caractere deve ser sublinhado e usado para o acelerador mnemônico.

Alguns dos métodos importantes da classe gtk.ToggleButton são fornecidos na tabela a seguir -

ativar() Isso define o active propriedade para o valor para True (ativo ou pressionado ou ligado) ou False (inativo ou normal ou desligado)
get_active () Isso recupera o estado do botão
alternado () Isso emite o sinal "toggled" no botão toggle.

O widget ToggleButton emite o seguinte sinal -

Alternado Isso é emitido quando o estado do botão de alternância muda programaticamente ou pela ação do usuário.

O código fornecido a seguir demonstra o uso de widgets ToggleButton.

Dois widgets ToggleButtons e Label são colocados em um contêiner VBox. O sinal alternado emitido por Button1 é conectado a uma função de retorno de chamada on_toggled (). Nesta função, o estado de Button2 é definido como True se o estado de Button1 for False e vice-versa.

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

Ele exibe os estados instantâneos dos botões no rótulo.

Exemplo

Observe o seguinte código -

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

O código acima gera a seguinte saída -