поляна околоДиалог не закрывается - PullRequest
5 голосов
/ 23 февраля 2009

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

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

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

Ответы [ 2 ]

6 голосов
/ 23 мая 2009

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

  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)

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

5 голосов
/ 23 февраля 2009

Вам нужно вызвать метод 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

...