【发布时间】:2014-07-24 09:17:36
【问题描述】:
现在(只是为了解释) Main.process() 函数和 WorkerThread.run() 函数是相同的。 它们通过从 listWidget 获取主布局上的值来操作。 我希望我的工作线程类使用我在主列表小部件上设置的参数。
import sys, time
from PyQt4.QtCore import *
from PyQt4.QtGui import *
class Main(QWidget):
def __init__(self, parent = None):
super(Main, self).__init__()
self.trdprocessbtn = QPushButton("Thread Processing")
self.guiprocessbtn = QPushButton("Main Processing")
self.listwidget = QListWidget()
for i in range(10):
self.listwidget.addItem(str(i))
layout = QVBoxLayout()
layout.addWidget(self.listwidget)
layout.addWidget(self.guiprocessbtn)
layout.addWidget(self.trdprocessbtn)
self.setLayout(layout)
self.guiprocessbtn.clicked.connect(self.process)
self.workerthread = WorkerThread()
self.trdprocessbtn.clicked.connect(self.startthread)
def startthread(self):
self.workerthread.start()
def process(self):
x = self.listwidget.currentItem().text()
for i in range(int(x)):
print "this is main processing ", i
time.sleep(1)
def dialogOpen(self):
dialog = Dialog()
dialog.exec_()
class WorkerThread(QThread):
def __init__(self, parent = None):
super(WorkerThread, self).__init__()
def run(self):
x = self.listwidget.currentItem().text()
for i in range(int(x)):
print "This is thread processing ", i
time.sleep(1)
app = QApplication(sys.argv)
form = Main()
form.show()
app.exec_()
【问题讨论】:
-
您需要添加更多信息。你试过什么?举个例子。
-
您可以先阅读“如何真正、真正地使用 QThread:mayaposch.wordpress.com/2011/11/01/…
-
可能更好的链接是:qt-project.org/doc/qt-5/thread-basics.html(我真的不喜欢像给定的那样链接博客或“你错了”-QThread 帖子)所有实现都有正当的理由。官方文档在这里给出了很好的建议
标签: multithreading qt pyqt qthread