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网络编程学习笔记(四):域名系统
Jun 09 Python
Python实现TCP/IP协议下的端口转发及重定向示例
Jun 14 Python
常见的python正则用法实例讲解
Jun 21 Python
用python找出那些被“标记”的照片
Apr 20 Python
Python使用reportlab模块生成PDF格式的文档
Mar 11 Python
Django保护敏感信息的方法示例
May 09 Python
django 中QuerySet特性功能详解
Jul 25 Python
解决python flask中config配置管理的问题
Jul 26 Python
python GUI库图形界面开发之PyQt5时间控件QTimer详细使用方法与实例
Feb 26 Python
浅谈keras中自定义二分类任务评价指标metrics的方法以及代码
Jun 11 Python
Python3 pyecharts生成Html文件柱状图及折线图代码实例
Sep 29 Python
python 将html转换为pdf的几种方法
Dec 29 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 empty()与isset()区别的详细介绍
2013/06/17 PHP
PHP实现获取文件后缀名的几种常用方法
2015/08/08 PHP
php 在字符串指定位置插入新字符的简单实现
2016/06/28 PHP
PHP学习记录之数组函数
2018/06/01 PHP
在Z-Blog中运行代码[html][/html](纯JS版)
2007/03/25 Javascript
ASP SQL防注入的方法
2008/12/25 Javascript
node.js中watch机制详解
2014/11/17 Javascript
VS2008中使用JavaScript调用WebServices
2014/12/18 Javascript
NodeJS中利用Promise来封装异步函数
2015/02/25 NodeJs
使用AngularJS创建自定义的过滤器的方法
2015/06/18 Javascript
JS实现自动变换的菜单效果代码
2015/09/09 Javascript
Immutable 在 JavaScript 中的应用
2016/05/02 Javascript
BootStrap中关于Select下拉框选择触发事件及扩展
2016/11/22 Javascript
Angular的$http与$location
2016/12/26 Javascript
Bootstrap导航简单实现代码
2017/03/06 Javascript
15分钟学会vue项目改造成SSR(小白教程)
2019/12/17 Javascript
vue从后台渲染文章列表以及根据id跳转文章详情详解
2020/12/14 Vue.js
[00:27]DOTA2次级职业联赛 - Lilith战队宣传片
2014/12/01 DOTA
[47:02]2018DOTA2亚洲邀请赛3月29日 小组赛B组 VP VS paiN
2018/03/30 DOTA
[02:37]2018DOTA2亚洲邀请赛赛前采访-EG篇
2018/04/03 DOTA
Python多线程编程(八):使用Event实现线程间通信
2015/04/05 Python
Python中的map()函数和reduce()函数的用法
2015/04/27 Python
Python操作MongoDB详解及实例
2017/05/18 Python
python3实现elasticsearch批量更新数据
2019/12/03 Python
使用Python合成图片的实现代码(图片添加个性化文本,图片上叠加其他图片)
2020/04/30 Python
Python基于Twilio及腾讯云实现国际国内短信接口
2020/06/18 Python
Python实现迪杰斯特拉算法过程解析
2020/09/18 Python
Hotels.com加拿大:领先的在线住宿网站
2018/10/05 全球购物
智能家居、吸尘器、滑板车、电动自行车网上购物:Geekmaxi
2021/01/18 全球购物
公司道歉信范文
2014/01/09 职场文书
《学棋》教后反思
2014/04/14 职场文书
学生会竞选演讲稿
2014/04/24 职场文书
产品销售计划书
2014/05/04 职场文书
2013年最新自荐信范文
2014/06/23 职场文书
小学亲子活动总结
2014/07/01 职场文书
初中化学教学反思
2016/02/22 职场文书