Python3和pyqt5实现控件数据动态显示方式


Posted in Python onDecember 13, 2019

最近笔者在做一个pyqt5的界面,由于在日常生活中,一些实际运用的场合都需要对数据进行实时的刷新,例如对某个数值的监控,水温,室温的监控等等,都需要实时的刷新控件显示的数据。

对于实现这样的一种功能,pyqt5在面板生成的同时就固定住了UI中的数据,例如我们产生一个QLineEdit控件,然后布局在面板上,但是控件中的数据是固定的,如果这个数据是实时更新的,想要改变空间中的数据时,就要去刷新面板,pyqt5提供了一个QApplication.processEvents()的命令来刷新整个面板,但是要完成数据的动态显示,则要不断的去调用这个函数来刷新面板,同样,以使用多线程去刷新面板上的数据,但是通过搜索各种大佬的博客等,发现了pyqt5多线程刷新的各种问题,即大佬主要使用多线程来对控件显示的数据进行实时的刷新。 本文旨在演示一种使用定时器来刷新控件实现数据的方法,具体代码如下:

import sys
import random
import numpy as np
from time import sleep
import datetime
from PyQt5 import QtWidgets
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *

定义数据生成线程,该线程主要目的是不断生成随机数,用来模拟不断采集数据

class WorkThread(QThread):
  # 初始化线程
  def __int__(self):
    super(WorkThread, self).__init__()
  #线程运行函数
  def run(self):
    while True:
      global T_value
      global P_value
      T_value = random.randint(200,225)
      P_value = random.randint(150,200)
      print(T_value, P_value)
      sleep(3)

定义显示面板

class plotwindows(QtWidgets.QWidget):
  def __init__(self):
    super(plotwindows,self).__init__()
    layout = QFormLayout()
    self.edita3 = QLineEdit()
    self.edita4 = QLineEdit()
    self.edita5 = QLineEdit()
    layout.addRow("A数值", self.edita3)
    layout.addRow("B数值", self.edita4)
    layout.addRow("C数值", self.edita5)
    self.setLayout(layout)
    self.Mytimer()

定义定时器,使用定时器每隔一段时间来出发update函数,从而刷新数据

def Mytimer(self):
  timer = QTimer(self)
  timer.timeout.connect(self.update)
  timer.start(100)

刷新函数

def update(self):
  self.edita3.setText(str(T_value))
  self.edita4.setText(str(P_value))
  global SUM_value
  SUM_value = T_value + P_value
  self.edita5.setText(str(SUM_value))

def mainwindows():
  app =QtWidgets.QApplication(sys.argv)
  new = plotwindows()
  new.show()
  sys.exit(app.exec_())

if __name__ == "__main__":
  workThread = WorkThread()
  workThread.start()
  mainwindows()

Python3和pyqt5实现控件数据动态显示方式

Python3和pyqt5实现控件数据动态显示方式

可以看到,子线程不断的生成数据,同时定时器以一种不断调用刷新函数的方法来实现对控件显示数据的刷新,这样就不用再建立新线程的情况下实现刷新控件显示的功能。

以上这篇Python3和pyqt5实现控件数据动态显示方式就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python time模块用法实例详解
Sep 11 Python
python 队列详解及实例代码
Oct 18 Python
python的pdb调试命令的命令整理及实例
Jul 12 Python
python模块smtplib学习
May 22 Python
Python按钮的响应事件详解
Mar 04 Python
python算法与数据结构之单链表的实现代码
Jun 27 Python
Python动态语言与鸭子类型详解
Jul 01 Python
Python中如何将一个类方法变为多个方法
Dec 30 Python
你可能不知道的Python 技巧小结
Jan 29 Python
Python多线程操作之互斥锁、递归锁、信号量、事件实例详解
Mar 24 Python
解决redis与Python交互取出来的是bytes类型的问题
Jul 16 Python
基于Python实现粒子滤波效果
Dec 01 Python
python实现简单日志记录库glog的使用
Dec 13 #Python
利用matplotlib实现根据实时数据动态更新图形
Dec 13 #Python
Python3将jpg转为pdf文件的方法示例
Dec 13 #Python
如何使用python3获取当前路径及os.path.dirname的使用
Dec 13 #Python
PyQt5多线程刷新界面防假死示例
Dec 13 #Python
wxpython多线程防假死与线程间传递消息实例详解
Dec 13 #Python
python-web根据元素属性进行定位的方法
Dec 13 #Python
You might like
说明的比较细的php 正则学习实例
2008/07/30 PHP
php写的AES加密解密类分享
2014/06/20 PHP
使用symfony命令创建项目的方法
2016/03/17 PHP
巧用jquery解决下拉菜单被Div遮挡的相关问题
2014/02/13 Javascript
深入探讨javascript中的数据类型
2015/03/04 Javascript
jQuery实现根据类型自动显示和隐藏表单
2015/03/18 Javascript
js获取当前日期时间及其它操作汇总
2015/04/17 Javascript
微信开发 微信授权详解
2016/10/21 Javascript
JS实现的加减乘除四则运算计算器示例
2017/08/09 Javascript
vue实现移动端图片裁剪上传功能
2020/08/18 Javascript
vue router-link传参以及参数的使用实例
2017/11/10 Javascript
js推箱子小游戏步骤代码解析
2018/01/10 Javascript
vue中实现图片和文件上传的示例代码
2018/03/16 Javascript
vue中使用cookies和crypto-js实现记住密码和加密的方法
2018/10/18 Javascript
在JavaScript中使用严格模式(Strict Mode)
2019/06/13 Javascript
vue之a-table中实现清空选中的数据
2019/11/07 Javascript
Vue 实现v-for循环的时候更改 class的样式名称
2020/07/17 Javascript
vue 项目中当访问路由不存在的时候默认访问404页面操作
2020/08/31 Javascript
vue监听滚动事件的方法
2020/12/21 Vue.js
python获取酷狗音乐top500的下载地址 MP3格式
2018/04/17 Python
使用matplotlib中scatter方法画散点图
2019/03/19 Python
Python 中的参数传递、返回值、浅拷贝、深拷贝
2019/06/25 Python
pandas实现to_sql将DataFrame保存到数据库中
2019/07/03 Python
在pandas中遍历DataFrame行的实现方法
2019/10/23 Python
Python制作简易版小工具之计算天数的实现思路
2020/02/13 Python
Python爬虫实现模拟点击动态页面
2020/03/05 Python
Python操作Excel的学习笔记
2021/02/18 Python
video下autoplay属性无效的解决方法(添加muted属性)
2020/05/19 HTML / CSS
MIKI HOUSE美国官方网上商店:日本领先的婴儿和儿童高级时装品牌
2020/06/21 全球购物
先进班级集体事迹材料
2014/01/30 职场文书
党员四风自我剖析材料思想汇报
2014/09/13 职场文书
2015大学生实训报告
2014/11/05 职场文书
中标通知书范本
2015/04/17 职场文书
开展警示教育活动总结
2015/05/09 职场文书
卖车协议书范文
2016/03/23 职场文书
解析MySQL binlog
2021/06/11 MySQL