PyGTK - klasa ToggleButton
Widżet ToggleButton to gtk.Button z dwoma stanami - a pressed or active (lub włączony) stan i normal or inactive (or off)stan. Za każdym naciśnięciem przycisku stan zmienia się. Stan ToggleButton można również zmienić programowo za pomocą metody set_active (). Aby zmienić stan przycisku, dostępna jest również metoda toggled ().
Klasa gtk.ToggleButton ma następujący konstruktor -
gtk.ToggleButton(label = None, use_underline = True)
Tutaj etykieta to test, który ma być wyświetlany na przycisku. Właściwość use_underline, jeśli wartość True, podkreślenie w tekście wskazuje, że następny znak należy podkreślić i użyć jako akceleratora mnemonicznego.
W poniższej tabeli przedstawiono niektóre z ważnych metod klasy gtk.ToggleButton -
set_active () | To ustawia active właściwość na wartość True (aktywny lub wciśnięty lub włączony) lub False (nieaktywne lub normalne lub wyłączone) |
get_active () | To pobiera stan przycisku |
toggled () | To emituje sygnał „przełączony” na przełączniku. |
Widżet ToggleButton emituje następujący sygnał -
Przełączono | Jest to emitowane, gdy stan togglebutton zmienia się programowo lub w wyniku działania użytkownika. |
Poniższy kod demonstruje użycie widżetów ToggleButton.
Dwa widżety ToggleButtons i Label są umieszczane w kontenerze VBox. Sygnał przełączany emitowany przez Button1 jest połączony z funkcją wywołania zwrotnego on_toggled (). W tej funkcji stan przycisku Button2 jest ustawiany na True, jeśli stan przycisku Button1 jest fałszywy i odwrotnie.
if self.btn1.get_active() == True:
self.btn2.set_active(False)
else:
self.btn2.set_active(True)
Wyświetla chwilowe stany przycisków na etykiecie.
Przykład
Przestrzegaj następującego kodu -
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()
Powyższy kod generuje następujące dane wyjściowe -