Python3和pyqt5實現(xiàn)控件數(shù)據(jù)動態(tài)顯示方式
最近筆者在做一個pyqt5的界面,由于在日常生活中,一些實際運用的場合都需要對數(shù)據(jù)進行實時的刷新,例如對某個數(shù)值的監(jiān)控,水溫,室溫的監(jiān)控等等,都需要實時的刷新控件顯示的數(shù)據(jù)。
對于實現(xiàn)這樣的一種功能,pyqt5在面板生成的同時就固定住了UI中的數(shù)據(jù),例如我們產(chǎn)生一個QLineEdit控件,然后布局在面板上,但是控件中的數(shù)據(jù)是固定的,如果這個數(shù)據(jù)是實時更新的,想要改變空間中的數(shù)據(jù)時,就要去刷新面板,pyqt5提供了一個QApplication.processEvents()的命令來刷新整個面板,但是要完成數(shù)據(jù)的動態(tài)顯示,則要不斷的去調用這個函數(shù)來刷新面板,同樣,以使用多線程去刷新面板上的數(shù)據(jù),但是通過搜索各種大佬的博客等,發(fā)現(xiàn)了pyqt5多線程刷新的各種問題,即大佬主要使用多線程來對控件顯示的數(shù)據(jù)進行實時的刷新。 本文旨在演示一種使用定時器來刷新控件實現(xiàn)數(shù)據(jù)的方法,具體代碼如下:
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 *
定義數(shù)據(jù)生成線程,該線程主要目的是不斷生成隨機數(shù),用來模擬不斷采集數(shù)據(jù)
class WorkThread(QThread): # 初始化線程 def __int__(self): super(WorkThread, self).__init__() #線程運行函數(shù) 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數(shù)值", self.edita3) layout.addRow("B數(shù)值", self.edita4) layout.addRow("C數(shù)值", self.edita5) self.setLayout(layout) self.Mytimer()
定義定時器,使用定時器每隔一段時間來出發(fā)update函數(shù),從而刷新數(shù)據(jù)
def Mytimer(self): timer = QTimer(self) timer.timeout.connect(self.update) timer.start(100)
刷新函數(shù)
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()
可以看到,子線程不斷的生成數(shù)據(jù),同時定時器以一種不斷調用刷新函數(shù)的方法來實現(xiàn)對控件顯示數(shù)據(jù)的刷新,這樣就不用再建立新線程的情況下實現(xiàn)刷新控件顯示的功能。
以上這篇Python3和pyqt5實現(xiàn)控件數(shù)據(jù)動態(tài)顯示方式就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
Python中的魔術方法Magic?Methods使用實例全面指南
在Python中,魔術方法Magic?Methods是一種特殊的方法,它們以雙下劃線開頭和結尾,如__init__、__str__等,這些方法允許定制類的行為,使得對象更具有靈活性和可定制性,本文將深入探討Python中一些常用的魔術方法,以及如何使用它們來定制類與對象2024-01-01Python 中 -m 的典型用法、原理解析與發(fā)展演變
這篇文章主要介紹了Python 中 -m 的典型用法、原理解析與發(fā)展演變,需要的朋友可以參考下2019-11-11python?requests實現(xiàn)上傳excel數(shù)據(jù)流
這篇文章主要介紹了python?requests實現(xiàn)上傳excel數(shù)據(jù)流,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-02-02Python3和PyCharm安裝與環(huán)境配置【圖文教程】
這篇文章主要介紹了Python3和PyCharm安裝與環(huán)境配置,結合圖文形式詳細分析了Python3和PyCharm的安裝、環(huán)境配置、測試命令及相關操作注意事項,需要的朋友可以參考下2020-02-02