我正在为qgis 3编写一个python插件。
基本上,我试图在用户单击某个功能时获得它。
mapTool.featureIdentified.connect(onFeatureIdentified)
因此在功能 onfeatureIdentified
中def onFeatureIdentified(feature):
print("feature selected : "+ str(feature.id()))
featureIdentified方法传递一个隐式参数。
void QgsMapToolIdentifyFeature :: featureIdentified(const QgsFeature &)无效QgsMapToolIdentifyFeature :: featureIdentified( QgsFeatureId)
我的问题是我想向该函数传递另一个参数(识别出一个特征后,我想关闭窗口) 像这样:
mapTool.featureIdentified.connect(onFeatureIdentified(window))
def onFeatureIdentified(feature,window):
print("feature selected : "+ str(feature.id()))
window.quit()
这样做,window参数将覆盖本机方法的隐式参数。
我应该怎么做?
答案 0 :(得分:0)
有两种方法可以做到:
使用lambda函数(贷记为acw1668)传递第二个参数
mapTool.featureIdentified.connect(lambda feature: onFeatureIdentified(feature, window))
然后
def onFeatureIdentified(feature,window):
如果您使用课程(例如我):
在类的 __ init __ 函数中定义窗口,然后始终通过 self.window
引用窗口mapTool.featureIdentified.connect(self.onFeatureIdentified)
然后
def onFeatureIdentified(self,feature):
print("feature selected : "+ str(feature.id()))
self.window.quit()
第一个参数将是self,然后将传递函数的本机参数