pyqt5 多线程QThread的使用
2019-08-20 本文已影响0人
请叫我雯子小姐的小爷
在使用pyqt5进行GUI编程的时候,网上能够找到的材料寥寥无几,往下这几篇文章是我自己的踩坑记录,如果有遇到一些棘手的问题,可以私聊我,一起探讨。
首先,pyqt5中使用多线程需要自己重写QThread的run函数
class Search_movie(QThread):
display_signal = pyqtSignal(str) ##此处定义了一个信号,可以用来与主程序交互
def __init__(self, name):
super().__init__() ## 继承QThread
self.name = name ## 取出主程序传过来的参数name
def run(self):
result = self.name ## 此处放你的函数功能,我以返回电影名为例
self.display_signal.emit(result)
这样,function就写好了,接下来就是在主程序中调用这个function的问题了,你可以在主程序中定义一个函数,如下
def search(self, name):
try:
self.search_movieThread = Search_movie(name) ##调用多线程
self.search_movieThread.display_signal.connect(self.movieresult_display)#此处是将display_signal的返回值交给你定义的功能使用
self.search_movieThread.start() ##启动多线程
except:
self.movieresult_display("网络不太好啊,加载不出来呀...")
def movieresult_display(self, msm):##msm 是display_signal传回来的值
QMessageBox.information(self, '搜索成功', '结果是{0}'.forma(msm)) ##放入你自己的功能,我这里以显示一个弹窗为例
这样,多线程就写好了,你可以通过将search绑定到按钮或者其他信号槽来调用他。
这篇文章也可以在微信公众号'微电脑'中查看,点击查看,同时,公众平台上也给出了我自己写的pyqt5程序(一个)的下载链接,可以用来搜索下载音乐,电影,下载百度文库文章,以及观看各个视频网站的VIP视频,同时也是一个8线程下载器。公众号发送'一个'即可获取。