Pyqt5-多线程QThread的使用

在使用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,python小栈,python,pyqt5)