(三)Pyside2 + QtDesigner 绘制曲线

1. 前期准备

前期软件安装及配置见: (一)Pyside2 + QtDesigner 软件安装及配置

2. 绘图工具选择

Python 语言的数据可视化(绘图)方法常用的有 MatplotlibPyQtGraph。本案例采用 PyQtGraph 进行操作。其安装方法见: 前期软件安装及配置

3. QtDesigner 中的设置

QtDesigner 界面上能够放置的都是 Qt 的内置控件,而 PyQtGraph 里的 PlotWidget 属于第三方控件,在 QtDesigner 中并不存在,需要进行一定的设置。

  1. QtDesigner 中创建一个 Wedget 控件,然后右击鼠标,点击 提升为…
    (三)Pyside2 + QtDesigner 绘制曲线_第1张图片
  2. 在弹出的 提升的窗口部件 窗口中进行如下设定,之后先点击 添加 ,再点击 提升
    (三)Pyside2 + QtDesigner 绘制曲线_第2张图片
    提升的类名称: PlotWidget
    头文件: plotgraph
    此时 widget 的属性便从 QWidget 便为了 PlotWidget
    (三)Pyside2 + QtDesigner 绘制曲线_第3张图片
  3. 主程序代码
from PySide2.QtWidgets import QApplication
from PySide2.QtUiTools import QUiLoader
import pyqtgraph as pg
import numpy as np


class CurvShow:

    def __init__(self):
        # 从文件中加载UI定义
        loader = QUiLoader()
		# pyside2 一定要使用registerCustomWidget 
        # 来注册 ui 文件中的第三方控件,这样加载的时候
        # loader才知道第三方控件对应的类,才能实例化对象
        loader.registerCustomWidget(pg.PlotWidget)

        self.ui = loader.load('pic.ui')
		# widget 是控件名称,需要注意
        self.pw = self.ui.widget

        self.pw.setBackground('w')

        self.pw.setLabel('left', '幅值')
        self.pw.setLabel('bottom', '弧度')

        self.ui.pushButton.clicked.connect(self.sin_curv)

    def sin_curv(self):
        t = np.arange(-5, 5, 0.01)
        y = np.sin(t)
        self.pw.clear()
        self.pw.setTitle('正弦函数曲线', size='12pt')
        self.pw.plot(t, y, pen=pg.mkPen('b'))


if __name__ == '__main__':

    app = QApplication([])
    stats = CurvShow()
    stats.ui.show()
    app.exec_()
  1. 结果展示
    (三)Pyside2 + QtDesigner 绘制曲线_第4张图片

你可能感兴趣的:(python学习,python,qt5,pycharm)