当线程启动时(.start)有什么办法可以将参数传递给QThread吗?启动时将参数传递给pyqt线程
我发现了一个在stackoverflow中使用pyqt线程的例子,但我想知道如何传递一个参数,以防我希望工作线程处理传递给它的run()函数的数据。
我指的是后:Busy indication with PyQt progress bar
代码:
class MyCustomWidget(QtGui.QWidget):
def __init__(self, parent=None):
super(MyCustomWidget, self).__init__(parent)
layout = QtGui.QVBoxLayout(self)
self.progressBar = QtGui.QProgressBar(self)
self.progressBar.setRange(0,100)
button = QtGui.QPushButton("Start", self)
layout.addWidget(self.progressBar)
layout.addWidget(button)
button.clicked.connect(self.onStart)
self.myLongTask = TaskThread()
self.myLongTask.notifyProgress.connect(self.onProgress)
def onStart(self):
self.myLongTask.start()
def onProgress(self, i):
self.progressBar.setValue(i)
class TaskThread(QtCore.QThread):
notifyProgress = QtCore.pyqtSignal(int)
def run(self):
for i in range(101):
self.notifyProgress.emit(i)
time.sleep(0.1)
我想打电话。开始如
self.myLongTask.start(myvar)
.
.
def run(self, myvar):
当然,但当传递变量,PyQt的呢不允许。
你有什么不想理由一旦线程已经启动,使用信号/插槽机制传递参数? – paisanco
据我了解,像上面的代码信号/插槽可以用来从TaskThread发送到MyCustomWidget的参数。我想要的是从MyCustomWidget发送到TaskThread的参数。 – electro
两种方式都可以发信号/插槽,但为什么不在线程实例化时传递参数呢? –