91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》
  • 首頁 > 
  • 教程 > 
  • 開發技術 > 
  • PyQt5中PyQtGraph實踐系列3之實時數據更新繪制圖形的示例分析

PyQt5中PyQtGraph實踐系列3之實時數據更新繪制圖形的示例分析

發布時間:2021-05-19 11:39:48 來源:億速云 閱讀:458 作者:小新 欄目:開發技術

小編給大家分享一下PyQt5中PyQtGraph實踐系列3之實時數據更新繪制圖形的示例分析,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

在之前介紹PyQtGraph的文章中,我們都是一次性的獲取數據并將其繪制為圖形。然而在很多場景中,我們都需要對實時的數據進行圖形化展示,比如:股票的實時行情、儀器設備的實時狀態等,這時候就需要對數據進行實時的更新和繪制。

今天我們就來介紹一下在PyQtGraph中根據實時數據更新繪制圖形。

今天的例子我們通過編寫一個電腦CPU實時使用率助手來講解。

一、通過Python獲取實時的CPU信息

在Windows操作系統的電腦上,我們通過“任務管理器”可以很方便地查看到自己電腦CPU實時的使用情況,并且CPU的占用率還會通過一個實時的圖形區域顯示出來,如下圖所示:

PyQt5中PyQtGraph實踐系列3之實時數據更新繪制圖形的示例分析

通過實時變化的CPU利用率圖形,我們可以清晰地看到CPU使用情況的變化。在Python中,我們也能很方便的獲取到計算機CPU的實時使用率。

# coding:utf-8
# @文件: 1.py
# @創建者:州的先生
# #日期:2019/5/12
# 博客地址:https://zmister.com
 
import psutil
cpu = "CPU:%0.2f" % psutil.cpu_percent(interval=1) + "%"
print(cpu)

通過運行上述代碼,我們就能獲取到此時電腦CPU的使用率。通過將其改進一下,加入循環和時間間隔,我們就可以持續獲得當前電腦CPU的使用率,如下代碼所示:

# coding:utf-8
# @文件: 1.py
# @創建者:州的先生
# #日期:2019/5/12
# 博客地址:zmister.com
 
import psutil
import time
 
 
def get_cpu_info():
  cpu = "CPU:%0.2f" % psutil.cpu_percent(interval=1) + "%"
  return cpu
 
 
def main():
  while True:
    info = get_cpu_info()
    print(info)
    time.sleep(1)
 
 
if __name__ == "__main__":
  main()

運行上述代碼,我們將每隔1秒獲取到實時的CPU使用率數據,這將是我們圖形界面程序的數據來源。

二、使用PyQt5創建一個圖形界面

有了數據來源之后,我們來創建一個圖形界面,這個圖形界面由一個Widget包裹著一個Plotwidget,圖形界面的核心就是一個ptqtgraph的圖形部件。其代碼如下所示:

# coding:utf-8
# @文件: 1.py
# @創建者:州的先生
# #日期:2019/5/12
# 博客地址:zmister.com
 
from PyQt5 import QtWidgets,QtCore,QtGui
import tushare as ts
import pyqtgraph as pg
import sys
import datetime
import traceback
import numpy as np
 
class MainUi(QtWidgets.QMainWindow):
  def __init__(self):
    super().__init__()
    self.setWindowTitle("CPU使用率監控 - 州的先生https://zmister.com")
    self.main_widget = QtWidgets.QWidget() # 創建一個主部件
    self.main_layout = QtWidgets.QGridLayout() # 創建一個網格布局
    self.main_widget.setLayout(self.main_layout) # 設置主部件的布局為網格
    self.setCentralWidget(self.main_widget) # 設置窗口默認部件
 
    self.plot_widget = QtWidgets.QWidget() # 實例化一個widget部件作為K線圖部件
    self.plot_layout = QtWidgets.QGridLayout() # 實例化一個網格布局層
    self.plot_widget.setLayout(self.plot_layout) # 設置線圖部件的布局層
    self.plot_plt = pg.PlotWidget() # 實例化一個繪圖部件
    self.plot_plt.showGrid(x=True,y=True) # 顯示圖形網格
    self.plot_layout.addWidget(self.plot_plt) # 添加繪圖部件到線圖部件的網格布局層
    # 將上述部件添加到布局層中
    self.main_layout.addWidget(self.plot_widget, 1, 0, 3, 3)
 
    self.setCentralWidget(self.main_widget)
 
def main():
  app = QtWidgets.QApplication(sys.argv)
  gui = MainUi()
  gui.show()
  sys.exit(app.exec_())
 
 
if __name__ == '__main__':
  main()

運行上述代碼,我們將會得到一個如下圖所示的圖形界面:

PyQt5中PyQtGraph實踐系列3之實時數據更新繪制圖形的示例分析

我們的CPU使用率數據將會通過圖形界面中間的畫布部件顯示出來。

三、在PyQtGraph中實時顯示CPU數據

創建好了基礎的圖形界面之后,我們就可以實時獲取電腦CPU的使用率然后將其繪制在圖形界面上了。

在之前的文章中,我們知道pyqtgraph的繪圖數據主要是通過setData()這個方法來轉化為圖形。我們可以設置一個定時器,每隔一個時間重新調用setData()方法對圖形數據進行設置,就能夠實現實時的數據可視化呈現。下面我們通過代碼演示一下:

from PyQt5 import QtWidgets,QtCore,QtGui
import pyqtgraph as pg
import sys
import traceback
import psutil
 
class MainUi(QtWidgets.QMainWindow):
  def __init__(self):
    super().__init__()
    self.setWindowTitle("CPU使用率監控 - 州的先生https://zmister.com")
    self.main_widget = QtWidgets.QWidget() # 創建一個主部件
    self.main_layout = QtWidgets.QGridLayout() # 創建一個網格布局
    self.main_widget.setLayout(self.main_layout) # 設置主部件的布局為網格
    self.setCentralWidget(self.main_widget) # 設置窗口默認部件
 
    self.plot_widget = QtWidgets.QWidget() # 實例化一個widget部件作為K線圖部件
    self.plot_layout = QtWidgets.QGridLayout() # 實例化一個網格布局層
    self.plot_widget.setLayout(self.plot_layout) # 設置K線圖部件的布局層
    self.plot_plt = pg.PlotWidget() # 實例化一個繪圖部件
    self.plot_plt.showGrid(x=True,y=True) # 顯示圖形網格
    self.plot_layout.addWidget(self.plot_plt) # 添加繪圖部件到K線圖部件的網格布局層
    # 將上述部件添加到布局層中
    self.main_layout.addWidget(self.plot_widget, 1, 0, 3, 3)
 
    self.setCentralWidget(self.main_widget)
    self.plot_plt.setYRange(max=100,min=0)
    self.data_list = []
    self.timer_start()
 
  # 啟動定時器 時間間隔秒
  def timer_start(self):
    self.timer = QtCore.QTimer(self)
    self.timer.timeout.connect(self.get_cpu_info)
    self.timer.start(1000)
 
  # 獲取CPU使用率
  def get_cpu_info(self):
    try:
      cpu = "%0.2f" % psutil.cpu_percent(interval=1)
      self.data_list.append(float(cpu))
      print(float(cpu))
      self.plot_plt.plot().setData(self.data_list,pen='g')
    except Exception as e:
      print(traceback.print_exc())
 
def main():
  app = QtWidgets.QApplication(sys.argv)
  gui = MainUi()
  gui.show()
  sys.exit(app.exec_())
 
 
if __name__ == '__main__':
  main()

在上述代碼中,我們定義了一個1秒鐘的計時器,然后定義了一個數據列表data_list,獲取到的cpu使用率都將添加到這個列表中,然后作為圖形數據傳遞給pyqtgraph。

運行上述代碼,我們可以得到如下動圖所示的實時更新圖形界面,每一秒獲取到的CPU使用率數據都實時繪制為了線條:

PyQt5中PyQtGraph實踐系列3之實時數據更新繪制圖形的示例分析

由于所有的操作都是在主線程上進行的,會導致圖形界面有些許的卡頓,更加理想的做法是創建一個子線程來生成和繪制圖形,在此就不作額外的演示了,大家可以自己嘗試一下。

以上是“PyQt5中PyQtGraph實踐系列3之實時數據更新繪制圖形的示例分析”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

海口市| 云南省| 乌审旗| 南阳市| 江西省| 平利县| 乐至县| 郎溪县| 噶尔县| 开原市| 施秉县| 高邑县| 辽宁省| 达尔| 邮箱| 靖州| 谢通门县| 泌阳县| 周宁县| 三都| 尼玛县| 普格县| 高唐县| 房产| 仁化县| 故城县| 万安县| 阿合奇县| 济南市| 卓尼县| 敖汉旗| 沭阳县| 德格县| 陇南市| 石景山区| 抚顺县| 海门市| 民权县| 郓城县| 阳新县| 太康县|