我正在使用QGIS的python插件,我的主要形式是DlgQueryBuilder.py另一种形式是DlgDberror.py,显示查询。我的DlgDberror.py 包含以下内容:
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('<','<') + "</pre>"
self.txtMessage.setHtml(msg)
@staticmethod
def showError(e, parent):
dlg = DlgDbError(e,parent)
dlg.show()
来自DlgQueryBuilder.py是“DlgDbError.showError(e,self)“ 一切都很顺利,但当我试着运行我的主模式时DlgQueryBuilder.py,*DlgDberror.py*表单不是显示。它一秒钟内就消失了。 dlg.show公司()应该工作礼仪??在
当
showError
退出时,dlg
会被垃圾回收并消失,这也会破坏底层的Qt对象和对话框。我怀疑你需要把你的对话以某种方式传给QGIS,这样它就可以处理任何需要的对话。所以是的,show()
可以工作,但是你的程序在它做任何有用的事情之前就破坏了对话框。在也许你想要
exec_()
而不是?它将弹出对话框,然后阻止等待用户关闭对话框。这称为模态对话框。见http://www.riverbankcomputing.co.uk/static/Docs/PyQt4/html/qdialog.html相关问题 更多 >
编程相关推荐