[英]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.