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 -