Python PyQt4 发送和接收自定义信号

标签 python python-2.7 signals pyqt4 signals-slots

我知道关于这个主题有几个问题。我已经浏览了其中的大部分内容,但仍然无法弄清楚为什么我会遇到这个问题。

基本上,我想做的是:使用 range (0,0) 显示繁忙指示进度条(即 QThread )类。

我正在使用mysignal = QtCore.pyqtSignal()创建我的信号。之后我使用 mysignal.emit()来传输该信号。该信号用于通知主线程停止进度条 Action 。

这就是我将该信号连接到我的函数之一 mysignal.connect(myfunction) 的方式。但每当我运行我的脚本时,我都会收到此错误消息。

AttributeError: 'PyQt4.QtCore.pyqtSignal' object has no attribute 'connect'

导致我的问题的可能原因是什么?

仅供引用:我正在使用 Windows 8.1 和 python 2.7.5

编辑:

下面我的代码的简化版本:

class Main(QtGui.QMainWindow):
    .......
    .......
    self.progressBar = QtGui.QProgressBar(self)
    self.progressBar.setRange(0,1)
    button = QtGui.QPushButton('button')
    button.clicked.connect(self.onStart())

    def onStart(self):
        self.progressBar.setRange(0,0)
        self.LoadPage = LoadingThread()
        self.LoadPage.taskFinished.connect(self.onFinished)
        self.LoadPage.Load()

    def onFinished(self):
        self.progressBar.setRange(0,1)


class LoadingThread(QtCore.QThread):
    def __init__(self):   
        QtCore.QThread.__init__(self)    
        self.taskFinished = QtCore.pyqtSignal()
    def Load(self):
        #My stuffs here (to be executed duing the progress bar busy)
        time.sleep(5)
        self.taskFinished.emit()

最佳答案

这听起来像是您将信号添加到类实例而不是类中,这是不可能的。几个小时前我自己尝试过,收到相同的错误消息......

确保信号在类上定义:

class Foo(QObject):

    mysignal = QtCore.pyqtSignal()

这不起作用:

foo = Foo()
foo.mysignal = QtCore.pyqtSignal()

编辑:

根据您的情况,将 LoadingThread 更改为:

class LoadingThread(QtCore.QThread):

    taskFinished = QtCore.pyqtSignal()

    def __init__(self):   
        QtCore.QThread.__init__(self)    

    def Load(self):
        #My stuffs here (to be executed duing the progress bar busy)
        time.sleep(5)
        self.taskFinished.emit()

关于Python PyQt4 发送和接收自定义信号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22687915/

相关文章:

Linux PTY 作为模块,但没有信号

python - 查找所有单词: Negative Look Behind in Regex

python - virtualenv 在 Ubuntu 上创建名为 'local' 的目录

python - 如何指定要存储的输入数量?

initialization - VHDL/如何初始化我的信号?

python - pip 或 easy_install 默认指的是哪个版本的 Python?

python - 将绘图保存到本地文件并插入到 html

python - 在 Python 的 C 扩展中调用 C 函数

python - 如何区分指数和普通数

c++ - 信号处理