Python+PyQT5的子线程更新UI界面的实例


Posted in Python onJune 14, 2019

子线程里是不能更新UI界面的,在移动端方面。Android的UI访问是没有加锁的,多个线程可以同时访问更新操作同一个UI控件。也就是说访问UI的时候,android系统当中的控件都不是线程安全的,这将导致在多线程模式下,当多个线程共同访问更新操作同一个UI控件时容易发生不可控的错误。所以Android中规定只能在UI线程中访问UI,相当于从另一个角度给Android的UI访问加上锁,一个伪锁。

在PyQT5中使用QThread

from PyQt5.QtWidgets import QMainWindow, QPushButton, QApplication
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
import time
 
#继承QThread
 
class Mythread(QThread):
  # 定义信号,定义参数为str类型
  breakSignal = pyqtSignal(int)
 
  def __init__(self, parent=None):
    super().__init__(parent)
    # 下面的初始化方法都可以,有的python版本不支持
    # super(Mythread, self).__init__()
 
  def run(self):
      #要定义的行为,比如开始一个活动什么的
 
      for i in(1,1000):
 
        print(i)
        self.breakSignal.emit(i)
      
 
 
if __name__ == '__main__':
  app = QApplication([])
  dlg = QDialog()
  dlg.resize(400, 300)
  dlg.setWindowTitle("自定义按钮测试")
  dlgLayout = QVBoxLayout()
  dlgLayout.setContentsMargins(40, 40, 40, 40)
  btn = QPushButton('测试按钮')
  dlgLayout.addWidget(btn)
  dlgLayout.addStretch(40)
  dlg.setLayout(dlgLayout)
  dlg.show()
 
 
  def chuli(a):
    # dlg.setWindowTitle(s)
    btn.setText(str(a))
 
  # 创建线程
  thread = Mythread()
  # # 注册信号处理函数
  thread.breakSignal.connect(chuli)
  # # 启动线程
  thread.start()
  dlg.exec_()
  app.exit()

在python中刷新UI可以类似,采用消息传递的机制。

可以在子线程中修改主线程的变量,主线程读取变量并绘制的方式。

以上这篇Python+PyQT5的子线程更新UI界面的实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
浅析Python基础-流程控制
Mar 18 Python
Python基于正则表达式实现检查文件内容的方法【文件检索】
Aug 30 Python
简单的python协同过滤程序实例代码
Jan 31 Python
解决python 无法加载downsample模型的问题
Oct 25 Python
六行python代码的爱心曲线详解
May 17 Python
Python中查看变量的类型内存地址所占字节的大小
Jun 26 Python
使用Python制作表情包实现换脸功能
Jul 19 Python
使用Python paramiko模块利用多线程实现ssh并发执行操作
Dec 05 Python
pytorch实现查看当前学习率
Jun 24 Python
Python根据指定文件生成XML的方法
Jun 29 Python
如何用Python搭建gRPC服务
Jun 30 Python
python双向链表实例详解
May 25 Python
在PYQT5中QscrollArea(滚动条)的使用方法
Jun 14 #Python
PYQT5设置textEdit自动滚屏的方法
Jun 14 #Python
使用PyQt4 设置TextEdit背景的方法
Jun 14 #Python
Ubuntu18.04中Python2.7与Python3.6环境切换
Jun 14 #Python
ubuntu 16.04下python版本切换的方法
Jun 14 #Python
windows下安装Python虚拟环境virtualenvwrapper-win
Jun 14 #Python
Ubuntu18.04下python版本完美切换的解决方法
Jun 14 #Python
You might like
无数据库的详细域名查询程序PHP版(4)
2006/10/09 PHP
PHP防盗链的基本思想 防盗链的设置方法
2015/09/25 PHP
PHP实现的自定义数组排序函数与排序类示例
2016/11/18 PHP
php实现base64图片上传方式实例代码
2017/02/22 PHP
用jQuery简化JavaScript开发分析
2009/02/19 Javascript
JavaScript 学习笔记(十五)
2010/01/28 Javascript
爆炸式的JS圆形浮动菜单特效代码
2010/03/03 Javascript
JavaScript 打地鼠游戏代码说明
2010/10/12 Javascript
这段js代码得节约你多少时间
2011/12/20 Javascript
Jquery显示和隐藏元素或设为只读(含Ligerui的控件禁用,实例说明介绍)
2013/07/09 Javascript
javascritp添加url参数将参数加入到url中
2014/09/25 Javascript
纯JavaScript基于notie.js插件实现消息提示特效
2016/01/18 Javascript
jQuery实现下拉框多选 jquery-multiselect 的实例代码
2016/07/14 Javascript
详解让sublime text3支持Vue语法高亮显示的示例
2017/09/29 Javascript
vue安装遇到的5个报错及解决方法
2019/06/12 Javascript
小程序中canvas的drawImage方法参数使用详解
2019/07/04 Javascript
如何利用vue实现波谱拟合详解
2020/11/05 Javascript
详解详解Python中writelines()方法的使用
2015/05/25 Python
Python使用ConfigParser模块操作配置文件的方法
2018/06/29 Python
Python增强赋值和共享引用注意事项小结
2019/05/28 Python
PyInstaller将Python文件打包为exe后如何反编译(破解源码)以及防止反编译
2020/04/15 Python
中国领先的专业家电网购平台:国美在线
2016/12/25 全球购物
国际性能运动服装品牌:Dare 2b
2018/07/27 全球购物
美国购买肉、鸭、家禽、鹅肝和熟食网站:D’Artagnan
2018/11/13 全球购物
车库门开启器、遥控器和零件:Chamberlain
2019/04/09 全球购物
办公室文秘岗位职责
2013/11/15 职场文书
护理专业自荐信
2013/12/03 职场文书
三八红旗集体先进事迹材料
2014/05/22 职场文书
2014迎国庆标语大全
2014/09/19 职场文书
2014年师德师风自我剖析材料
2014/09/27 职场文书
2014年内部审计工作总结
2014/12/09 职场文书
研究生导师推荐信
2015/03/25 职场文书
刮痧观后感
2015/06/05 职场文书
天堂的孩子观后感
2015/06/11 职场文书
pytest进阶教程之fixture函数详解
2021/03/29 Python
如何自己动手写SQL执行引擎
2021/06/02 MySQL