Python-форма не отображается с использованием метода show - PullRequest
0 голосов
/ 11 февраля 2012

Я работаю с плагинами Python для QGIS. Моя основная форма имеет вид DlgQueryBuilder.py , а другая форма - DlgDberror.py , которая отображает ошибку в запросе. DlgDberror.py содержит следующее:

<code>class DlgDbError(QtGui.QWidget, Ui_DlgDbError):
def __init__(self,e,parent):


    QtGui.QWidget.__init__(self)
    Ui_DlgDbError.__init__(self)
    self.setupUi(self)
    msg = "<pre>" + e.msg.replace('<','&lt;') + "
» self.txtMessage.setHtml (MSG) @staticmethod def showError (e, parent): dlg = DlgDbError (e, родитель) dlg.show ()

Вызов этого из DlgQueryBuilder.py : « DlgDbError.showError (e, self) » Все идет гладко, но когда я пытаюсь запустить мою основную форму DlgQueryBuilder.py , * DlgDberror.py * форма не отображается. Она исчезает в течение секунды. dlg.show () должен работать обряд ??

1 Ответ

1 голос
/ 11 февраля 2012

Когда showError выходит, dlg собирается и удаляется, что также уничтожает базовые объекты Qt и диалог. Я подозреваю, что вам нужно каким-то образом передать свой диалог обратно в QGIS, чтобы он мог обрабатывать все, что необходимо с диалогом. Так что да, show() работает, но ваша программа уничтожает диалог, прежде чем она сможет сделать что-нибудь полезное.

Возможно, вы хотели exec_() вместо этого? Появится диалоговое окно, а затем заблокируется, пока пользователь не закроет диалоговое окно. Это известно как модальный диалог. Смотри http://www.riverbankcomputing.co.uk/static/Docs/PyQt4/html/qdialog.html

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