0

2つのクラスがあります。1つはウィンドウ用、もう1つは制御オブジェクト用です

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'object'に切り替えると、正常に機能します。QtCore.QObjectタイプを使用して接続されない理由を理解しようとしています。

信号は、ウィンドウクラスでも問題なく接続されます。

_scanOreに@QtCore.pyqtSlot(str、name ='scanGo')を指定し、信号の作成にもnameパラメーターを追加してみました。ここで何が欠けているのかわかりません。

4

1 に答える 1

2

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
于 2012-10-02T16:42:01.600 に答える