欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

PyQt5的PyQtGraph實(shí)踐系列3之實(shí)時(shí)數(shù)據(jù)更新繪制圖形

 更新時(shí)間:2019年05月13日 08:35:42   作者:州的先生  
這篇文章主要介紹了PyQt5的PyQtGraph實(shí)踐系列3之實(shí)時(shí)數(shù)據(jù)更新繪制圖形,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧

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

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

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

一、通過Python獲取實(shí)時(shí)的CPU信息

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

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

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

通過運(yùn)行上述代碼,我們就能獲取到此時(shí)電腦CPU的使用率。通過將其改進(jìn)一下,加入循環(huán)和時(shí)間間隔,我們就可以持續(xù)獲得當(dāng)前電腦CPU的使用率,如下代碼所示:

# coding:utf-8
# @文件: 1.py
# @創(chuàng)建者:州的先生
# #日期: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()

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

二、使用PyQt5創(chuàng)建一個(gè)圖形界面

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

# coding:utf-8
# @文件: 1.py
# @創(chuàng)建者:州的先生
# #日期: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使用率監(jiān)控 - 州的先生https://zmister.com")
    self.main_widget = QtWidgets.QWidget() # 創(chuàng)建一個(gè)主部件
    self.main_layout = QtWidgets.QGridLayout() # 創(chuàng)建一個(gè)網(wǎng)格布局
    self.main_widget.setLayout(self.main_layout) # 設(shè)置主部件的布局為網(wǎng)格
    self.setCentralWidget(self.main_widget) # 設(shè)置窗口默認(rèn)部件
 
    self.plot_widget = QtWidgets.QWidget() # 實(shí)例化一個(gè)widget部件作為K線圖部件
    self.plot_layout = QtWidgets.QGridLayout() # 實(shí)例化一個(gè)網(wǎng)格布局層
    self.plot_widget.setLayout(self.plot_layout) # 設(shè)置線圖部件的布局層
    self.plot_plt = pg.PlotWidget() # 實(shí)例化一個(gè)繪圖部件
    self.plot_plt.showGrid(x=True,y=True) # 顯示圖形網(wǎng)格
    self.plot_layout.addWidget(self.plot_plt) # 添加繪圖部件到線圖部件的網(wǎng)格布局層
    # 將上述部件添加到布局層中
    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()
 

運(yùn)行上述代碼,我們將會得到一個(gè)如下圖所示的圖形界面:

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

三、在PyQtGraph中實(shí)時(shí)顯示CPU數(shù)據(jù)

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

在之前的文章中,我們知道pyqtgraph的繪圖數(shù)據(jù)主要是通過setData()這個(gè)方法來轉(zhuǎn)化為圖形。我們可以設(shè)置一個(gè)定時(shí)器,每隔一個(gè)時(shí)間重新調(diào)用setData()方法對圖形數(shù)據(jù)進(jìn)行設(shè)置,就能夠?qū)崿F(xiàn)實(shí)時(shí)的數(shù)據(jù)可視化呈現(xiàn)。下面我們通過代碼演示一下:

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使用率監(jiān)控 - 州的先生https://zmister.com")
    self.main_widget = QtWidgets.QWidget() # 創(chuàng)建一個(gè)主部件
    self.main_layout = QtWidgets.QGridLayout() # 創(chuàng)建一個(gè)網(wǎng)格布局
    self.main_widget.setLayout(self.main_layout) # 設(shè)置主部件的布局為網(wǎng)格
    self.setCentralWidget(self.main_widget) # 設(shè)置窗口默認(rèn)部件
 
    self.plot_widget = QtWidgets.QWidget() # 實(shí)例化一個(gè)widget部件作為K線圖部件
    self.plot_layout = QtWidgets.QGridLayout() # 實(shí)例化一個(gè)網(wǎng)格布局層
    self.plot_widget.setLayout(self.plot_layout) # 設(shè)置K線圖部件的布局層
    self.plot_plt = pg.PlotWidget() # 實(shí)例化一個(gè)繪圖部件
    self.plot_plt.showGrid(x=True,y=True) # 顯示圖形網(wǎng)格
    self.plot_layout.addWidget(self.plot_plt) # 添加繪圖部件到K線圖部件的網(wǎng)格布局層
    # 將上述部件添加到布局層中
    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()
 
  # 啟動定時(shí)器 時(shí)間間隔秒
  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()
 

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

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

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

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • python中的log日志多線程安全

    python中的log日志多線程安全

    這篇文章主要介紹了python中的log日志多線程安全,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • python基礎(chǔ)之變量和數(shù)據(jù)類型

    python基礎(chǔ)之變量和數(shù)據(jù)類型

    這篇文章主要介紹了python的變量和數(shù)據(jù)類型,實(shí)例分析了Python中返回一個(gè)返回值與多個(gè)返回值的方法,需要的朋友可以參考下
    2021-10-10
  • Python用5行代碼實(shí)現(xiàn)批量摳圖的示例代碼

    Python用5行代碼實(shí)現(xiàn)批量摳圖的示例代碼

    這篇文章主要介紹了Python用5行代碼實(shí)現(xiàn)批量摳圖的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-04-04
  • 玩轉(zhuǎn)Python圖像處理之二值圖像腐蝕詳解

    玩轉(zhuǎn)Python圖像處理之二值圖像腐蝕詳解

    這篇文章主要給大家介紹了關(guān)于Python圖像處理之二值圖像腐蝕的相關(guān)資料,對原圖進(jìn)行二值化后,選擇不同的結(jié)構(gòu)元素對其進(jìn)行膨脹和腐蝕運(yùn)算處理,并仿真出圖像結(jié)果,需要的朋友可以參考下
    2021-09-09
  • Python操作Excel文件的11種方法(全網(wǎng)最全)

    Python操作Excel文件的11種方法(全網(wǎng)最全)

    在日常工作或開發(fā)過程中,Excel文件作為一種常用的數(shù)據(jù)存儲格式,其高效便捷的數(shù)據(jù)處理能力被廣泛應(yīng)用于數(shù)據(jù)統(tǒng)計(jì)、數(shù)據(jù)分析等領(lǐng)域,Python作為一種強(qiáng)大的編程語言,提供了豐富的庫支持來實(shí)現(xiàn)對Excel文件的操作,本篇將詳細(xì)介紹如何使用Python來操作Excel文件
    2025-03-03
  • pycharm修改界面主題顏色的方法

    pycharm修改界面主題顏色的方法

    今天小編就為大家分享一篇pycharm修改界面主題顏色的方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-01-01
  • 解決pycharm19.3.3安裝pyqt5找不到designer.exe和pyuic.exe的問題

    解決pycharm19.3.3安裝pyqt5找不到designer.exe和pyuic.exe的問題

    這篇文章給大家介紹了pycharm19.3.3安裝pyqt5&pyqt5-tools后找不到designer.exe和pyuic.exe以及配置QTDesigner和PyUIC的問題,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2021-04-04
  • 使用Python實(shí)現(xiàn)自動化辦公的代碼示例(郵件、excel)

    使用Python實(shí)現(xiàn)自動化辦公的代碼示例(郵件、excel)

    隨著技術(shù)的進(jìn)步,Python 的高效性和易用性使其成為辦公自動化的強(qiáng)大工具,通過 Python,我們可以自動處理日常工作中的郵件、Excel 表格等任務(wù),從而大幅提升效率,本文將詳細(xì)介紹如何使用 Python 實(shí)現(xiàn)這些自動化功能,并附上關(guān)鍵代碼示例,需要的朋友可以參考下
    2025-01-01
  • Python多進(jìn)程Process和管道Pipe的使用方式

    Python多進(jìn)程Process和管道Pipe的使用方式

    這篇文章主要介紹了Python多進(jìn)程Process和管道Pipe的使用方式,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-02-02
  • Pycharm新建項(xiàng)目時(shí)報(bào)錯解決辦法

    Pycharm新建項(xiàng)目時(shí)報(bào)錯解決辦法

    pycharm可以很方便的管理Python的解釋器(如果安裝了多個(gè)的話),以及第三方模塊,包,下面這篇文章主要給大家介紹了關(guān)于Pycharm新建項(xiàng)目時(shí)報(bào)錯解決的相關(guān)資料,需要的朋友可以參考下
    2023-06-06

最新評論