Уведомления

Группа в Telegram: @pythonsu

#1 Март 7, 2013 09:59:46

voltron
От:
Зарегистрирован: 2009-04-23
Сообщения: 31
Репутация: +  2  -
Профиль   Отправить e-mail  

PyQt4: передать экземпляр класса в сигнале

Есть некий класс

class Raster(object):
    def __init__(self, filename=None):
        self.filename = filename
        self.mask = None
        self.bands  = None
...

И есть другой класс — наследник QObject, выполняющий определенные действия. Результатом является экземпляр класса Raster. Этот результат необходимо передать в другую часть кода используя механизм сигнал-слот. Пытаюсь сделать это так

class Worker(QObject):
    updateProgress = pyqtSignal()
    processFinished = pyqtSignal(Raster)
....
  def process(self, params):
   ...
   out = Raster()
   ...
   self.processFinished.emit(out)

Но в слот ничего не передаётся. Также пробовал заменить Raster на object с тем же результатом. В документации приводятся примеры, но там везде используются стандартные типы Python. Можно ли как-то передавать экземпляр своего класса?



Офлайн

#2 Март 7, 2013 15:33:31

reclosedev
От: Н.Новгород
Зарегистрирован: 2012-03-29
Сообщения: 870
Репутация: +  173  -
Профиль   Отправить e-mail  

PyQt4: передать экземпляр класса в сигнале

Должно работать. Покажите как соединяете сигнал со слотом.

#!/usr/bin/env python
# -*- coding: utf-8 -*-
from PyQt4.QtCore import QObject, pyqtSignal
  
class Raster(object):
    pass
 
class Worker(QObject):
    updateProgress = pyqtSignal()
    processFinished = pyqtSignal(Raster)
    def process(self, params):
        out = Raster()
        self.processFinished.emit(out)
 
def handler(obj):
    print obj
 
w = Worker()
w.processFinished.connect(handler)
w.process(42)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version