GIS-LAB

Географические информационные системы и дистанционное зондирование


Форумы GIS-Lab.info

Геоинформационные системы (ГИС) и Дистанционное зондирование Земли


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

Вопросы по свободной ГИС QGIS. Сообщения об ошибках, предложения по улучшению, локализация.

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

Сообщение klerk184 » 21 мар 2017, 04: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()


Прошу помощи разобраться, что я не так делаю?
  • 0

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

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

Сообщение klerk184 » 25 мар 2017, 19: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)
  • 0

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


Вернуться в QGIS

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

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


(Геокруг)

© GIS-Lab и авторы, 2002-2013. При использовании материалов сайта, ссылка на GIS-Lab и авторов обязательна. Содержание материалов - ответственность авторов (подробнее).