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 相关文章推荐
Python2.x和3.x下maketrans与translate函数使用上的不同
Apr 13 Python
对Tensorflow中权值和feature map的可视化详解
Jun 14 Python
在python中pandas的series合并方法
Nov 12 Python
Python基于聚类算法实现密度聚类(DBSCAN)计算【测试可用】
Dec 26 Python
dataframe 按条件替换某一列中的值方法
Jan 29 Python
python3利用ctypes传入一个字符串类型的列表方法
Feb 12 Python
python查询文件夹下excel的sheet名代码实例
Apr 02 Python
Java文件与类动手动脑实例详解
Nov 10 Python
Python中使用filter过滤列表的一个小技巧分享
May 02 Python
Python爬虫谷歌Chrome F12抓包过程原理解析
Jun 04 Python
Jupyter Notebook安装及使用方法解析
Nov 12 Python
Python paramiko使用方法代码汇总
Nov 20 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
zend api扩展的php对象的autoload工具
2011/04/18 PHP
PHP中的函数嵌套层数限制分析
2011/06/13 PHP
浅析PHP中Collection 类的设计
2013/06/21 PHP
使用PHP生成图片的缩略图的方法
2015/08/18 PHP
js异或加解密效果代码
2008/06/25 Javascript
JS中的public和private对象,即static修饰符
2012/01/18 Javascript
jquery代码实现简单的随机图片瀑布流效果
2015/04/20 Javascript
基于jQuery实现音乐播放试听列表
2016/04/14 Javascript
jQuery解决IE6、7、8不能使用 JSON.stringify 函数的问题
2016/05/31 Javascript
js实现table添加行tr、删除行tr、清空行tr的简单实例
2016/10/15 Javascript
js时间戳格式化成日期格式的多种方法介绍
2017/02/16 Javascript
vue-resource 拦截器使用详解
2017/02/21 Javascript
全面介绍vue 全家桶和项目实例
2017/12/27 Javascript
浅谈vue中.vue文件解析流程
2018/04/24 Javascript
vue-cli webpack 引入swiper的操作方法
2018/09/15 Javascript
BootStrap modal实现拖拽功能
2018/12/01 Javascript
javascript json字符串到json对象转义问题
2019/01/22 Javascript
基于JavaScript 实现拖放功能
2019/09/12 Javascript
webpack+vue.js构建前端工程化的详细教程
2020/05/10 Javascript
对Python w和w+权限的区别详解
2019/01/23 Python
Python中正则表达式的用法总结
2019/02/22 Python
Python中三元表达式的几种写法介绍
2019/03/04 Python
Osklen官方在线商店:巴西服装品牌
2019/04/25 全球购物
关于爱情的广播稿
2014/01/16 职场文书
校园之星获奖感言
2014/01/29 职场文书
公务员综合考察材料
2014/02/01 职场文书
怎样写好创业计划书的内容
2014/02/06 职场文书
小学生个人先进事迹材料
2014/05/08 职场文书
先进集体申报材料
2014/12/25 职场文书
文明礼仪倡议书
2015/04/28 职场文书
2016高考寄语或鼓励的话语
2015/12/04 职场文书
七年级数学教学反思
2016/02/17 职场文书
vue使用v-model进行跨组件绑定的基本实现方法
2021/04/28 Vue.js
python spilt()分隔字符串的实现示例
2021/05/21 Python
只用50行Python代码爬取网络美女高清图片
2021/06/02 Python
动画《新网球王子 U-17 WORLD CUP》希腊队PV公开
2022/04/02 日漫