Дополнение на Python с использованием GTK+

Home Forums Разработка Разработка сценариев Дополнение на Python с использованием GTK+

This topic contains 1 reply, has 1 voice, and was last updated by  zend 7 years, 6 months ago.

Viewing 2 posts - 1 through 2 (of 2 total)
  • Author
    Posts
  • #849

    zend
    Participant

    Занимаясь написанием очередной версии своего дополнения, столкнулся с проблемой: родительский gtk.Dialog закрывается вместе с дочерним gtk.MessageDialog.

    Суть в следующем, на gtk.Dialog располагаются различные поля ввода и, конечно, кнопки “Отмена” и “Добавить”. С помощью этого диалога можно добавить свой формат фото. После нажатия на кнопку “Добавить” происходит проверка, а нет ли уже такого формата? И если такой формат уже существует, то из gtk.Dialog вызывается gtk.MessageDialog с соответствующим предупреждением и кнопкой “Ок”. И все бы хорошо, только вот если нажать на “Ок”, для того чтобы закрыть окошко с предупреждением и ввести корректные данные, вместе с gtk.MessageDialog закроется и вызвавший его gtk.Dialog.

    gtk.MessageDialog


    def show_error_msg(self, msg):
    errdialog = gtk.MessageDialog(None,
    0,
    gtk.MESSAGE_ERROR,
    gtk.BUTTONS_OK, msg)
    errdialog.set_position(gtk.WIN_POS_CENTER_ALWAYS)
    errdialog.show_all()
    response_err = errdialog.run()
    if response_err == gtk.RESPONSE_OK :
    errdialog.hide()
    errdialog.destroy()
    return

    gtk.Dialog


    dialog = gtk.Dialog("Добавить новый формат",
    None,
    0,
    (gtk.STOCK_CANCEL,
    gtk.RESPONSE_REJECT,
    "Добавить",
    gtk.RESPONSE_OK)
    )

    Вопрос в следующем: как избежать подобной ситуации, как не дать закрыться родительскому gtk.Dialog вместе с дочерним gtk.MessageDialog?

    Заранее спасибо.

    #1445

    zend
    Participant

    Хм… Вот такой код отрабатывает нормально – диалоги закрываются по очереди:


    errdialog = gtk.MessageDialog(None,
    gtk.DIALOG_DESTROY_WITH_PARENT,
    gtk.MESSAGE_INFO,
    gtk.BUTTONS_OK,
    "msg")
    errdialog.set_position(gtk.WIN_POS_CENTER_ALWAYS)
    errdialog.show_all()

    infodialog = gtk.MessageDialog(None,
    gtk.DIALOG_DESTROY_WITH_PARENT,
    gtk.MESSAGE_ERROR, gtk.BUTTONS_OK,
    "msg msg msg msg msg msg msg msg")
    infodialog.set_position(gtk.WIN_POS_CENTER_ALWAYS)
    infodialog.show_all()

    response_err = errdialog.run()

    if response_err == gtk.RESPONSE_OK :
    errdialog.hide()
    errdialog.destroy()

    response_info = infodialog.run()

    if response_info == gtk.RESPONSE_OK :
    infodialog.hide()
    infodialog.destroy()
Viewing 2 posts - 1 through 2 (of 2 total)

You must be logged in to reply to this topic.