Найти - Пользователи
Полная версия: PyQt4: передать экземпляр класса в сигнале
Начало » Python для новичков » PyQt4: передать экземпляр класса в сигнале
1
voltron
Есть некий класс
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. Можно ли как-то передавать экземпляр своего класса?
reclosedev
Должно работать. Покажите как соединяете сигнал со слотом.
#!/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)
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB