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