Виджет ToggleButton представляет собой gtk.Button с двумя состояниями — нажатием или активным (или включенным) состоянием и нормальным или неактивным (или выключенным) состоянием. При каждом нажатии кнопки состояние меняется. Состояние ToggleButton также может быть программно изменено методом set_active (). Для переключения состояния кнопки также доступен метод toggled ().
Класс gtk.ToggleButton имеет следующий конструктор —
gtk.ToggleButton(label = None, use_underline = True)
Здесь метка — это тест, отображаемый на кнопке. Свойство use_underline, если True, подчеркивание в тексте указывает, что следующий символ должен быть подчеркнут и использован для ускорителя мнемоники.
Некоторые из важных методов класса gtk.ToggleButton приведены в следующей таблице:
установить активное() | При этом для свойства active устанавливается значение True (активно или нажато или включено) или False (неактивно или нормально или выключено) |
get_active () | Это возвращает состояние кнопки |
переключены () | Это издает «переключенный» сигнал на кнопке переключения. |
Виджет ToggleButton испускает следующий сигнал —
переключается, | Это испускается, когда состояние переключателя изменяется либо программно, либо действием пользователя. |
Приведенный ниже код демонстрирует использование виджетов ToggleButton.
Два виджета ToggleButtons и Label помещаются в контейнер VBox. Переключаемый сигнал, испускаемый Button1, подключается к функции обратного вызова on_toggled (). В этой функции состояние Button2 устанавливается на True, если для Button1 установлено значение False, и наоборот.
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()
Приведенный выше код генерирует следующий вывод —