传递外部参数保持隐式参数

问题描述 投票:0回答:1

我正在为qgis 3编写一个python插件。

基本上我正试图在用户点击它时获得一个功能。

mapTool.featureIdentified.connect(onFeatureIdentified)

所以在函数onfeatureIdentified

def onFeatureIdentified(feature):
        print("feature selected : "+ str(feature.id()))

方法特征Identified传递隐式参数。

void QgsMapToolIdentifyFeature :: featureIdentified(const QgsFeature&)void QgsMapToolIdentifyFeature :: featureIdentified(QgsFeatureId)

我的问题是我想将另一个参数传递给函数(我想在识别一个特征时关闭我的窗口),如下所示:

mapTool.featureIdentified.connect(onFeatureIdentified(window))

def onFeatureIdentified(feature,window):
            print("feature selected : "+ str(feature.id()))
            window.quit()

通过这样做,window参数覆盖本机方法的隐式参数。

我应该怎么做 ?

python function tkinter parameter-passing qgis
1个回答
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,然后它将传递函数的原始参数
© www.soinside.com 2019 - 2024. All rights reserved.