栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Python PyQT:如何从辅助线程调用GUI函数?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Python PyQT:如何从辅助线程调用GUI函数?

简而言之:移至

QThread
并使用Qt的信号和插槽,它们是线程之间进行通信的首选方式。

该答案提供了一些示例,显示如下:https :
//stackoverflow.com/a/6789205/2319400

就您而言,使用上面的“ SomeObject”版本看起来像这样:

class Worker(QtCore.QObject):    madeProgress = QtCore.pyqtSignal([int])    finished = QtCore.pyqtSignal()    def __init__(self, cmdlist):        self.cmdlist = cmdlist    def run(self):        for icmd, cmd in enumerate(self.cmdlist): # execute your work # processCommand(cmd) # signal that we've made progress self.madeProgress.emit(icmd)        # emit the finished signal - we're done        self.finished.emit()

然后将此工作程序移动到

QThread
您创建的实例。按照链接的答案中的模式,然后可以将
madeProgress
信号连接到
setValue
进度条的插槽:

workerThread = QThread()workerObject = Worker(cmdlist)workerObject.moveToThread(workerThread)workerThread.started.connect(workerObject.run)workerObject.finished.connect(workerThread.quit)# create a progressbar with min/max according to# the length of your cmdlistprogressBar = QProgressBar()progressBar.setRange(0, len(cmdlist))# connect the worker's progress signal with the progressbarworkerObject.madeProgress.connect(progressBar.setValue)# start the thread (starting your worker at the same time)workerThread.start()


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/646843.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号