1
我知道有關於這個主題的幾個問題。我仔細看過他們中的大部分,但仍然無法弄清楚爲什麼我有這個問題。Python PyQt4發射和接收自定義信號
基本上,我想要做的是:使用QThread
類來顯示繁忙的指示進度條(即range (0,0)
)。
我使用mysignal = QtCore.pyqtSignal()
創建我的信號。之後,我使用mysignal.emit()
來傳輸該信號。該信號用於通知主線程停止進度條動作。
這是我該信號連接到我的功能mysignal.connect(myfunction)
之一。但是每當我運行我的腳本時,我都有這個錯誤信息。
AttributeError: 'PyQt4.QtCore.pyqtSignal' object has no attribute 'connect'
什麼可能是我的問題的原因?
FYI:我使用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()
是它可以調用''我班Main'的setCentralWidget'方法從我的'LoadingThread'類? –
不是。從其他線程與GUI線程進行通信的推薦方式是使用信號和插槽。檢查:http://qt-project.org/doc/qt-4.8/thread-basics.html。如果我的答案解決了您的原始問題,請接受它:) – sebastian