2012-02-11 56 views
0

我与Python插件QGIS.I工作不显示蟒蛇形式有我的主要形式为DlgQueryBuilder.py和另一种形式为DlgDberror.py,它会显示错误的query.My DlgDberror.py 包含以下内容:使用show方法

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;') + "</pre>" 


    self.txtMessage.setHtml(msg) 



@staticmethod 
def showError(e, parent): 

    dlg = DlgDbError(e,parent) 
    dlg.show() 

DlgQueryBuilder.py这个电话被 “DlgDbError.showError(即个体经营)” 一切顺利光滑,但当我尝试运行我的主要形式DlgQueryBuilder.py,* DlgDberror.py *表格不显示。它在一秒钟内消失。 dlg.show()应该工作仪式?

回答

1

showError退出时,dlg被垃圾收集并消失,这也会破坏底层的Qt对象和对话框。我怀疑你需要以某种方式将对话返回给QGIS,以便它可以处理对话框中的任何必要的对话。所以是的,show()的作品,但你的程序在它可以做任何有用的事情之前破坏对话。

也许你想exec_()?它会弹出对话框,然后阻止等待用户关闭对话框。这被称为模态对话框。请参阅http://www.riverbankcomputing.co.uk/static/Docs/PyQt4/html/qdialog.html

+0

如果我使用dlg.exec_(),那么它会给出错误,说TypeError:'sip.methoddescriptor'对象不可调用... – poonam 2012-02-11 07:53:28

+0

哦,当然。我以某种方式认为你试图展示一个对话。看起来你已经构建了一个QWidget。你是否想从QDialog继承?您是否在遵循http://www.qgis.org/pyqgis-cookbook/plugins.html#plugins上的文档来创建插件? – gfortune 2012-02-11 08:31:16

相关问题