例項1:CPU使用率實時展示
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使用率監控")
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()
例項2:氣溫資料實時展示
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
import pyqtgraph as pg
import sys
from random import randint
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
self.setWindowTitle('pyqtgraph作圖')
# 建立 PlotWidget 物件
self.pw = pg.PlotWidget()
# 設定圖表標題
self.pw.setTitle("氣溫趨勢",
color='#008080',
size='12pt')
# 設定上下左右的label
self.pw.setLabel("left","氣溫(攝氏度)")
self.pw.setLabel("bottom","時間")
# 設定Y軸 刻度 範圍
self.pw.setYRange(min=-10, # 最小值
max=50) # 最大值
# 顯示錶格線
self.pw.showGrid(x=True, y=True)
# 背景色改為白色
self.pw.setBackground('w')
# 設定Y軸 刻度 範圍
self.pw.setYRange(min=-10, # 最小值
max=50) # 最大值
# 居中顯示 PlotWidget
self.setCentralWidget(self.pw)
# 實時顯示應該獲取 PlotDataItem物件, 呼叫其setData方法,
# 這樣只重新plot該曲線,效能更高
self.curve = self.pw.plot(
pen=pg.mkPen('r', width=1)
)
self.i = 0
self.x = [] # x軸的值
self.y = [] # y軸的值
# 啟動定時器,每隔1秒通知重新整理一次資料
self.timer = QTimer() # QtCore
self.timer.timeout.connect(self.updateData)
self.timer.start(1000)
def updateData(self):
self.i += 1
self.x.append(self.i)
# 建立隨機溫度值
self.y.append(randint(10, 30))
# plot data: x, y values
self.curve.setData(self.x, self.y)
if __name__ == '__main__':
app = QApplication(sys.argv)
main = MainWindow()
main.show()
app.exec_()