基于QThread实现子线程更新主线程/UI线程
基于QThread实现子线程更新主线程/UI线程
前言
基于QThread实现 子线程更新 主线程/UI线程。
在最近的项目中,GUI程序中使用信号-槽的方式实现某一模块功能,当模块的执行时间较长时,主界面会卡顿,直到模块中的功能执行完成后,主界面才会恢复正常。为解决此类问题,要使用多线程的方式;而在PySide2中 使用 Python 的多线程类 threading,在另一个线程直接操作界面,可能会导致意想不到的问题,比如:输出显示不全,甚至程序崩溃,所以要用到Qt特有的线程类QThread。
正文
项目的GUI主要基于PySide2实现,想要实现的功能是:当点击上传数据按键时,连接数据库,弹出提示框,并在报表中记录信息。
如上图所示,当只使用QPushButton的clicked事件,在clicked的槽函数中实现功能模块时,会发现当点击按键后,主线程会被堵塞,当槽函数功能运行完后,才会继续主线程UI界面刷新。
1、QThread的基本用法
a. 创建一个子类,继承自QThread