我有两节课。一个是mainWindow类,另一个是更新进度条的线程,等等。
要更新progressBar我正在使用这样的信号/插槽结构:(我显示相关代码):
import threading
from PyQt4 import QtCore, QtGui, Qt
class MyThread(threading.Thread):
mySignal = QtCore.pyqtSignal(int, int)
def __init__(self,*args):
threading.Thread.__init__(self)
class Form1(QtGui.QMainWindow):
def __init__(self, parent=None):
QtGui.QWidget.__init__(self, parent)
self.ui = Ui_MainWindow()
self.ui.setupUi(self)
...
...
@pyqtSlot(int, int)
def updateProgress(self, arg1, arg2):
print "TEST Argument1: ", arg1
print "TEST Argument2: ", arg2
def my_function(self):
mt = MyThread(*args)
mt.mySignal .connect(self.updateProgress)
mt.start()
我得到这个,我不确定理解:
mt.mySignal .connect(self.updateProgress)
TypeError: pyqtSignal must be bound to a QObject, not 'MyThread'
答案 0 :(得分:1)
你需要继承 QThread ,而不是继承python Thread。否则,QObject-Thread-ownership对于信号/插槽跨越线程边界起作用是至关重要的,这是不可能的。