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搭建服务器实现两个Android客户端间收发消息
Apr 12 Python
Python实现判断并移除列表指定位置元素的方法
Apr 13 Python
Python实现的微信好友数据分析功能示例
Jun 21 Python
Python解决走迷宫问题算法示例
Jul 27 Python
python实现顺序表的简单代码
Sep 28 Python
Python函数和模块的使用总结
May 20 Python
Pandas之ReIndex重新索引的实现
Jun 25 Python
python下PyGame的下载与安装过程及遇到问题
Aug 04 Python
python requests更换代理适用于IP频率限制的方法
Aug 21 Python
python多线程同步之文件读写控制
Feb 25 Python
解决Pycharm 中遇到Unresolved reference 'sklearn'的问题
Jul 13 Python
python基础之类方法和静态方法
Oct 24 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读取html并截取字符串的简单代码
2009/11/30 PHP
基于PHP实现假装商品限时抢购繁忙的效果
2015/10/16 PHP
微信开发之网页授权获取用户信息(二)
2016/01/08 PHP
php采集神器cURL使用方法详解
2016/02/19 PHP
jquery 学习笔记一
2010/04/07 Javascript
javascript获取form里的表单元素的示例代码
2014/02/14 Javascript
基于jquery实现等比缩放图片
2014/12/03 Javascript
node.js中的querystring.stringify方法使用说明
2014/12/10 Javascript
jQuery入门之层次选择器实例简析
2015/12/11 Javascript
详解BootStrap中Affix控件的使用及保持布局的美观的方法
2016/07/08 Javascript
微信小程序实现基于三元运算验证手机号/姓名功能示例
2019/01/19 Javascript
vue项目,代码提交至码云,iconfont的用法说明
2020/07/30 Javascript
Python Socket编程入门教程
2014/07/11 Python
Python随机生成均匀分布在三角形内或者任意多边形内的点
2017/12/14 Python
python2.7 json 转换日期的处理的示例
2018/03/07 Python
Python cookbook(数据结构与算法)对切片命名清除索引的方法
2018/03/13 Python
python登录WeChat 实现自动回复实例详解
2019/05/28 Python
python实现广度优先搜索过程解析
2019/10/19 Python
在 Python 中使用 MQTT的方法
2020/08/18 Python
python 密码学示例——理解哈希(Hash)算法
2020/09/21 Python
CSS3+HTML5+JS 实现一个块的收缩与展开动画效果
2020/11/17 HTML / CSS
html5调用app分享功能示例(WebViewJavascriptBridge)
2018/03/21 HTML / CSS
Html5 页面适配iPhoneX(就是那么简单)
2019/09/05 HTML / CSS
Beach Bunny Swimwear官网:设计师泳装和性感比基尼
2019/03/13 全球购物
英国复古服装购物网站:Collectif
2019/10/30 全球购物
Eton丹麦官网:精美的男式衬衫
2020/05/27 全球购物
关于Java finally的面试题
2016/04/27 面试题
应用心理学个人的求职信
2013/12/08 职场文书
小溪流的歌教学反思
2014/02/13 职场文书
幼儿园教师工作感言
2014/02/15 职场文书
协议书模板
2014/04/23 职场文书
低碳日宣传活动总结
2014/07/09 职场文书
班主任开场白
2015/06/01 职场文书
唱歌比赛拉拉队口号
2015/12/25 职场文书
大学生干部培训心得体会
2016/01/06 职场文书
2016党员发展对象培训心得体会
2016/01/08 职场文书