Кнопки Toggle

Иерархия наследования Object +--- Widget +--- Container +--- Bin +--- Button +--- ToggleButton

Кнопки Toggle отличны от нормальных тем, что находятся в одном из состояний "нажато" или "не нажато".

Создание кнопок Toggle new Gtk::ToggleButton(); new Gtk::ToggleButton( $label );

Реакция кнопки на запросы аналогична тому, что было описано выше про виджеты. Соответственно первая строчка создает просто кнопку, а вторая создает кнопку с лейблом.

Toggle сигналы.

Чтобы восстановить состояние toggle виджета, включая радиокнопки или чекбоксы, используется приведенная ниже конструкция. Код проверяет состояние кнопки, обращаясь к активной области виджета, содержащего toggle. Интересующий сигнал, посылаемый кнопкой(радио или чекбоксом), зовется 'toggled'. Чтобы проверить состояние этих кнопок, необходимо выставить обработчик сигнала чтобы поймать toggled сигнал: sub toggle_button_callback { $togglebutton = $_[0]; if ( $togglebutton->active ) { # Если тоггл нажат, то выполнится этот участок кода } else { # Если тоггл отжат, то выполнится этот участок кода } }

Состояние кнопки toggle

Чтобы сэмулировать нажатие тоггль-кнопки, её детей(все это относится к чекбоксам и радиокнопкам), используется функция set_active(): $togglebutton->set_active( $state );

Когда срабатывает эта функция, то в системе проходит сигнал 'clicked' но не 'toggled'.

Чтобы узнать состояние кнопки, необходимо вызвать функцию get_active(): $togglebutton->get_active();

Строчка $togglebutton->toggled(); испускает 'toggled' сигнал;