簡體   English   中英

Python PyQt4發出和接收自定義信號

[英]Python PyQt4 Emitting and Receiving Custom signals

我知道有關此主題有幾個問題。 我已經瀏覽了大多數,但仍然無法弄清楚為什么我會遇到這個問題。

基本上,我想做的是:使用QThread類顯示繁忙的指示進度欄(即range (0,0) )。

我正在使用mysignal = QtCore.pyqtSignal()創建我的信號。 之后,我使用mysignal.emit()傳輸該信號。 該信號用於通知主線程停止進度條操作。

這就是我將該信號連接到函數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()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM