QObject. connect и disconnect. Получение сигнала

Вопросы по свободной ГИС QGIS. Сообщения об ошибках, предложения по улучшению, локализация.
Ответить
klerk184
Участник
Сообщения: 71
Зарегистрирован: 23 июн 2016, 11:56
Репутация: 0

QObject. connect и disconnect. Получение сигнала

Сообщение klerk184 » 21 мар 2017, 03:47

Добрый день.
Суть проблемы в следующем:
Пытаюсь реализовать disconnect, но почему-то не выходит.

Код: Выделить всё

def save_in_file(self):
    if self.excelFile:
        if self.colored == True:
            self.layerAllot.loadNamedStyle(self.path_style) # загружаю стиль к слою
            set_layer_labels(self, self.layerAllot, '"sknr"', 10, enabled = True, drawLabels = True, drawBuffer=False) # включаю подписи
            QObject.connect(self.canvas, SIGNAL("mapCanvasRefreshed()"), lambda: exportMap(self)) # жду сигнал, что canvas обновился и выполняю функцию exportMap
        elif self.colored == False:
            self.layerAllot.loadNamedStyle(self.path_style) # загружаю стиль к слою
            set_layer_labels(self, self.layerAllot, '"sknr"', 10, enabled = True, drawLabels = True, drawBuffer=False) # включаю подписи
            QObject.connect(self.canvas, SIGNAL("mapCanvasRefreshed()"), lambda: exportMap(self)) # жду сигнал, что canvas обновился и выполняю функцию exportMap
    elif self.textFile:
        pass
    elif self.wordFile:
        pass

def exportMap(self):
    QObject.disconnect(self.canvas, SIGNAL("mapCanvasRefreshed()"), lambda: exportMap(self)) # пытаюсь отключить сигнал, но не выходит
    createPhotoPath = os.path.dirname(__file__) + "\\temporary\\feature.png"
    self.canvas.saveAsImage(createPhotoPath, None, "PNG")
    returnOriginal(self)

def returnOriginal(self):
    if self.colored == True:
        set_layer_labels(self, self.layerAllot, '"sknr"', 10, enabled = False, drawLabels = False, drawBuffer=False)
        self.canvas.refresh()
    elif self.colored == False:
        self.layerAllot.loadNamedStyle(getFileStyle.getStyleAllotmentColor(self, True))
        self.canvas.refresh()
Прошу помощи разобраться, что я не так делаю?

klerk184
Участник
Сообщения: 71
Зарегистрирован: 23 июн 2016, 11:56
Репутация: 0

Re: QObject. connect и disconnect. Получение сигнала

Сообщение klerk184 » 25 мар 2017, 18:47

Разобрался сам. Никто так и не смог помочь. Пишу на всякий случай, вдруг кому пригодится:

Вот так я пытался получить сигнал и вызвать функцию: QObject.connect(self.canvas, SIGNAL("mapCanvasRefreshed()"), lambda: exportMap(self)), затем пытался сделать дисконнект но ничего не срабатывало.

Нужно было сделать так:
func = lambda: exportMap(self)
QObject.connect(self.canvas, SIGNAL("mapCanvasRefreshed()"), func)
и тогда стал работать дисконнект:
QObject.disconnect(self.canvas, SIGNAL("mapCanvasRefreshed()"), func)

Ответить

Вернуться в «QGIS»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 2 гостя