9.5. Диалоги

Виджет Dialog очень простой, и представляет собой окно с несколькими заранее помещёнными в него вещами для вас. Он просто создаёт окно, и размещает сверху VBox, который содержит разделитель и HBox называемый "action_area".

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

  dialog = gtk.Dialog(title=None, parent=None, flags=0, buttons=None)

где title это текст для заголовка, parent это основное окно приложения и flags набор различных режимов для диалогового окна:

  DIALOG_MODAL - создаёт модальное диалоговое окно
DIALOG_DESTROY_WITH_PARENT - Закрывает диалоговое окно при закрытии родителя
DIALOG_NO_SEPARATOR - опускает разделитель между vbox и action_area

Аргумент buttons это кортеж содержащий пары из текста кнопки и её кода отклика (response). Все аргументы имеют умолчания, указываемые ключевыми словами.

После создания диалогового окна вы можете разместить кнопку в action_area:

  button = ...
dialog.action_area.pack_start(button, TRUE, TRUE, 0)
button.show()

Также вы можете добавить в vbox с помощью правил размещения любой другой виджет, например, метку.

  label = gtk.Label("Dialogs are groovy")
dialog.vbox.pack_start(label, TRUE, TRUE, 0)
label.show()

Как пример использования диалогов, вы можете разместить две кнопки "Отмена" и "Принять" в action_area, метку в vbox, спрашивая пользователя или сообщая ему об ошибке и т.п.. Вы можете подключить разные сигналы к каждой из кнопок и выполнять операцию выбранную пользователем.

Если простые возможности предоставляемые обычными вертикальными и горизонтальными коробками не дают вам достаточно власти над вашим приложением, то вы можете разместить в эти коробки другой размещающий виджет. Например мы можете разместить таблицу в вертикальной коробке.