подключение сигналов pyqt4 в классе qobject pyqt4

У меня есть два класса; один для моего окна и один для моего управляющего объекта

class window(baseClass, testForm):
    scanStarted = QtCore.pyqtSignal(str)
    def __init__(self,parent=None):
        super(window, self).__init__(parent)
        self.setupUi(self)

        #other window setup
        self._scanner.pushScan.clicked.connect(self._scanClicked)

    def _scanClicked(self):
        self.scanStarted.emit( self._scanner.getTextData() )

и мой управляющий объект

class vis(QtCore.QObject):
    def __init__(self):
        self._oreList = []

        self._w = window()
        self._w.scanStarted.connect(self._scanOre)

    def _scanOre(self, rawText):
        print "main ->", rawText

При использовании QtCore.QObject в качестве ссылки этот сигнал не будет подключаться к _scanOre. Когда я переключаю ссылку на «объект» python, он будет работать нормально. Я пытался понять, почему он не будет подключаться с использованием типа QtCore.QObject.

Сигнал также будет прекрасно подключаться в классе окна, независимо от того.

Я попытался дать _scanOre @QtCore.pyqtSlot(str, name='scanGo') и добавить параметр имени в создание сигнала. Я не уверен, что мне здесь не хватает.


person ooklah    schedule 02.10.2012    source источник


Ответы (1)


Вы забыли инициализировать QObject:

class vis(QtCore.QObject):
    def __init__(self, parent=None):
        super(vis, self).__init__(parent) # you are missing this line
                                          # also the `parent` arg
        self._oreList = []

        self._w = window.window()
        self._w.scanStarted.connect(self._scanOre)

    def _scanOre(self, rawText):
        print "main ->", rawText
person Avaris    schedule 02.10.2012
comment
О, чувак, я знал, что это будет что-то легкое, что я упускаю из виду. - person ooklah; 02.10.2012