Передача внешнего параметра с сохранением неявного параметра - PullRequest
0 голосов
/ 20 февраля 2019

Я пишу плагин Python для qgis 3.

По сути, я пытаюсь получить функцию, когда пользователь нажимает на нее.

mapTool.featureIdentified.connect(onFeatureIdentified)

, поэтому в функции onfeatureIdentified

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

Метод featureIdentified передает неявный параметр.

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

Моя проблема в том, что я хочу передать другой параметр функции (я хочу закрыть свои окна, когда функция определена), например:

mapTool.featureIdentified.connect(onFeatureIdentified(window))

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

Делаячто параметр окна перезаписывает неявный параметр нативного метода.

Как это сделать?

1 Ответ

0 голосов
/ 20 февраля 2019

Есть 2 способа сделать это:

  • использование лямбда-функции (кредит 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, затем он передаст собственный параметр функции

...