0

我正在使用qgis的 python 插件。我开发了与rt sql 层相同的插件,并在qgis中使用了相同的插件。当我运行 qgis exe 时,它​​的打开很好。但是在我的确定按钮上,我有以下代码来形成图层

# create the layer                      
            uri = self.db.getURI()
            uri.setDataSource("", "(" + query + ")", geomFieldName, "", uniqueFieldName)
            vl = self.iface.addVectorLayer(uri.uri(), newLayerName, self.db.getProviderName())

            QApplication.restoreOverrideCursor()

            if vl and vl.isValid():
                    self.saveQuery()
                    self.accept()

getURI()以另一种形式定义如下:

def getURI(self):
            # returns a new QgsDataSourceURI instance

            return qgis.core.QgsDataSourceURI( self.uri.connectionInfo() )

单击确定按钮时,它给了我错误提示

 return qgis.core.QgsDataSourceURI( self.uri.connectionInfo() )
AttributeError: 'NoneType' object has no attribute 'connectionInfo'

URI应该包含什么?

4

1 回答 1

0

看起来 getURI() 中的 self.uri 没有初始化。你检查过这个吗?您的代码段不允许重现该问题。尝试发布 self.uri 填充的代码(并检查这部分是否实际执行)。

于 2012-03-21T17:54:57.407 回答