Как получить события из главного окна, когда модальный диалог установлен в Python Gtk - PullRequest
0 голосов
/ 04 сентября 2011

У меня есть клиент-серверная программа.Мой питон всегда слушает данные, передаваемые в сокет.Если я получаю определенные предопределенные строки с сервера, я отображаю модальное диалоговое окно. Диалог можно закрыть двумя способами.Первый способ - пользователь должен реагировать на кнопки диалога.Второй способ: из сокета я должен получить еще одну команду для закрытия.Теперь проблема, с которой я сталкиваюсь, заключается в том, что когда диалог виден, сокет не получает никакой строки.Только если я закрою диалог, строка, отправленная клиентом, когда диалог был там, получена из сокета.Как я могу получать сообщения асинхронно от клиента, когда диалог есть.Если это возможно, как мне закрыть диалоговое окно программно.

1 Ответ

1 голос
/ 07 сентября 2011

Обе ваши проблемы связаны с использованием модального диалога. Вам лучше создать обычный диалог (не модальный) с только установленным атрибутом «остаться на вершине». В этом окне вы сможете изменять сообщения и даже закрывать их из другого процесса.

Вам нужно добавить «ответ» (или другое имя метода, если хотите) на кнопки:

    self.stayOnTopWindowResponse = None

    b = gtk.Button("Accept")
    b.response = "Accept"
    b.connect("clicked", self.accepted)

и в «принятой» подпрограмме (одна для всех кнопок) что-то вроде этого:

def accepted(self, widget):
    self.stayOnTopWindowResponse = widget.response
    self.stayOnTopWindow.close()

Я не проверял это, но оно должно работать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...