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