Вопрос

У меня есть AboutDialog вставка сделана в glade, но кнопка Закрытия не работает.Я не знаю, как подключить эту кнопку к отдельной функции, поскольку она находится в виджете под названием dialog-action_area.

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

Как я могу изменить это, чтобы оно просто скрывалось?

Это было полезно?

Решение

Вам нужно вызвать метод hide() виджета, когда вы получаете сигналы удаления или отмены:

response = self.wTree.get_widget("aboutdialog1").run() # or however you run it
if response == gtk.RESPONSE_DELETE_EVENT or response == gtk.RESPONSE_CANCEL:
  self.wTree.get_widget("aboutdialog1").hide()

Вы можете найти константы типа ответа в документации GTK

Другие советы

Как и в любом другом диалоговом окне, они требуют, чтобы вы

  1. Используйте метод run.
  2. Используйте сигнал "ответить"

Первый блокирует основной цикл и вернется, как только диалоговое окно получит ответ, это может быть нажатие на любую кнопку в области действий или нажатие Esc, или вызов метода ответа диалогового окна или "уничтожение" окна, последнее не означает, что окно будет уничтожено, это означает, что метод run() завершит работу и вернет ответ.вот так:

response = dialog.run()

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

response = dialog.run()
if response == gtk.RESPONSE_OK:
    #do something here if the user hit the OK button 
dialog.destroy()

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

def do_response(dialog, response):
    if response == gtk.RESPONSE_OK:
        #do something here if the user hit the OK button 
    dialog.destroy()

dialog.connect('response', do_response)

Теперь вы заметили, что вам нужно уничтожить свой диалог

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top