【问题标题】:connecting pyqt4 signals in a pyqt4 qobject class在 pyqt4 qobject 类中连接 pyqt4 信号
【发布时间】:2012-10-02 16:34:21
【问题描述】:

我有两节课;一个用于我的窗口,一个用于我的控制对象

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') 并将名称参数添加到信号创建中。我不确定我在这里缺少什么。

【问题讨论】:

    标签: python signals pyqt4 slot


    【解决方案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
    

    【讨论】:

    • 天哪,我知道这很容易被我忽略。
    猜你喜欢
    • 1970-01-01
    • 2012-08-03
    • 1970-01-01
    • 1970-01-01
    • 2019-07-25
    相关资源
    最近更新 更多