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

时间:2019-02-20 09:12:54

标签: python function tkinter parameter-passing qgis

我正在为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参数将覆盖本机方法的隐式参数。

我应该怎么做?

1 个答案:

答案 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,然后将传递函数的本机参数