Флажки (gtk.CheckButton)

Кнопки множественного выбора (CheckButton, они же: флажки, отметки) наследуют много свойств и методов от залипающих кнопок, но выглядят немного иначе. Вместо кнопок с текстом внутри, они представляют собой маленькие квадраты с надписью справа от них. Они часто используются в программах для одновременного включения-выключения нескольких значений.

Создание CheckButton также похоже на создание обычной кнопки.

  check_button = gtk.CheckButton(label=None)

Если аргумент label присутствует,  метод создаст кнопку выбора с меткой рядом с ней. Текст label проверяется на префиксы ‘_’ для мнемонических команд.

Проверка и установка состояния CheckButton идентична ToggleButton.

Программа checkbutton.py предоставляет пример использования кнопок множественного выбора. Рисунок 6.3, “Пример использования кнопок множественного выбора” показывает полученное окно:

Рисунок 6.3. Пример использования кнопок множественного выбора

Check Button Example

Исходный код программы checkbutton.py :

#!/usr/bin/env python
# --*-- coding:utf-8 --*--
# example checkbutton.py

import pygtk
pygtk.require('2.0')
import gtk

class CheckButton:
    # Наш callback.
    # Данные передаваемые этому методу выводятся в stdout
    def callback(self, widget, data=None):
        print "%s было нажато %s" % (data, ("OFF", "ON")[widget.get_active()])

    # Этот callback завершает программу
    def delete_event(self, widget, event, data=None):
        gtk.main_quit()
        return False

    def __init__(self):
        # Создаём новое окно
        self.window = gtk.Window(gtk.WINDOW_TOPLEVEL)

        # Устанавливаем заголовок окна
        self.window.set_title("Флажки")

        # Устанавливаем обработчик для delete_event 
        # который немедленно завершает GTK.
        self.window.connect("delete_event", self.delete_event)

        # Устанавливаем ширину границы виджета.
        self.window.set_border_width(20)

        # Создаём вертикальную коробку
        vbox = gtk.VBox(True, 2)

        # Размещаем VBox в главном окне
        self.window.add(vbox)

        # Создаём первую кнопку
        button = gtk.CheckButton("флажок 1")

        # Когда кнопка меняет состояние вызываем наш callback
        # с указателем на текст "флажок 1" в виде аргумента
        button.connect("toggled", self.callback, "флажок 1")


        # Вставляем кнопку 1
        vbox.pack_start(button, True, True, 2)

        button.show()

        # Создаём вторую кнопку

        button = gtk.CheckButton("флажок 2")

        # Когда кнопка меняет состояние вызываем наш callback
        # с указателем на текст "флажок 2" в виде аргумента
        button.connect("toggled", self.callback, "флажок 2")
        # Вставляем кнопку 2
        vbox.pack_start(button, True, True, 2)

        button.show()

        # Создаём кнопку "Выход"
        button = gtk.Button("Выход")

        # По щелчку вызываем функцию main_quit
        # и программа завершает работу
        button.connect("clicked", lambda wid: gtk.main_quit())

        # Вставляем кнопку выхода
        vbox.pack_start(button, True, True, 2)

        button.show()
        vbox.show()
        self.window.show()

def main():
    gtk.main()
    return 0       

if __name__ == "__main__":
    CheckButton()
    main()

Предыдущая страница На уровень выше  Следующая страница
6.2. Переключатели (gtk.RadioButton) К оглавлению  6.4. Переключатели (gtk.RadioButton)

Оставить комментарий

Ваш email не будет опубликован. Обязательные поля отмечены *

Вы можете использовать это HTMLтеги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>