Ошибка кнопки закрытия GtkAboutDialog - PullRequest
1 голос
/ 12 октября 2010

Я использую GtkAboutDialog, и все работает отлично, кроме кнопки закрытия этого виджета. Все остальные кнопки работают нормально, я не знаю как, но все кнопки имеют обратные вызовы по умолчанию, и они создают и разрушают окна. Но кнопка «Закрыть» виджета GtkAboutDialog не работает. Я даже не вижу это виджет. Итак, я могу получить к нему доступ?

[УТОЧНЕНИЕ] Что вы смотрите, так это gtk.AboutDialog - всплывающее окно с информацией о приложении (впервые в PyGTK 2.6). Это окно содержит виджет кнопки «Закрыть», который содержится в виджете GtkHButtonBox. Виджет GtkHButtonBox - это виджет самого высокого уровня, к которому у меня есть доступ. Любые идеи о том, как добраться до кнопки «закрыть» и подключить обработчик для сигнала обратного вызова?

alt text

Ответы [ 3 ]

1 голос
/ 19 октября 2010

gtk.AboutDialog - это просто gtk.Dialog, и вы обрабатываете ответы таким же образом.Вместо того, чтобы подключаться к сигналу нажатия кнопок, код диалога обрабатывает его для вас и возвращает ответ от вашего звонка run().Вы можете проверить значение возвращаемого ответа и выяснить, какая кнопка была нажата.

Если вместо этого вы пытаетесь изменить какое-либо поведение, вы можете подключиться к сигналу response gtk.Dialog. * 1008.*

1 голос
/ 16 октября 2010

Вы не соединяете сигналы таким же образом для диалога, как для окна. Я сделал ту же ошибку, изучая PyGTK.

Самая основная форма диалога - вы отображаете и запускаете диалог с:

aboutdialog.run()

Часто вам сразу же позвонят:

aboutdialog.destroy()

Строка .run () - это цикл, который выполняется до тех пор, пока что-то не произойдет в диалоге.

Здесь есть рабочий пример .

0 голосов
/ 24 мая 2013

Это старый вопрос, но, поскольку это один из первых обращений от Google, я решил добавить найденное решение.Вам нужен обработчик событий, чтобы показать диалоговое окно about, и один, чтобы закрыть его.Первый, скорее всего, будет связан с вашей справкой-> о сигнале * menu1m меню *.Последний должен быть подключен к сигналу response диалогового окна about.Два обработчика будут выглядеть примерно так:

def on_menuitemHelpAbout_activate(self, *args):
    self.builder.get_object('aboutdialog').show()
def on_aboutdialog_response(self, *args):
    self.builder.get_object('aboutdialog').hide()

В приведенном выше примере я использую GtkBuilder, чтобы найти диалоговое окно about, поскольку я создал интерфейс с glade.Обратите внимание, что я использую .show() вместо .run(), потому что не вижу смысла в приостановке выполнения программы до закрытия диалога.Наконец, обработчик ответа может быть выполнен, чтобы предпринять любое действие в зависимости от ответа, но я игнорирую его здесь.

...