pyside2 + pyqtgrapy 按钮与图线联动

使用到的库版本

效果预览

勾选checkbox,曲线出现,去勾选checkbox,曲线消失

按钮联动画图

代码

# python3.10
# -*- coding: utf-8 -*-
# @Time    : 2023/12/5 20:30
# @Author  : ningwan
# @File    : pyqtgrapy_lib
import numpy as np
import pyqtgraph as pg
from PySide2.QtWidgets import QApplication, QWidget, QHBoxLayout, QCheckBox, QVBoxLayout
from pyqtgraph import PlotWidget

a = np.random.random(20)
b = np.random.random(20)
c = np.random.random(20)


class Windows(QWidget):

    def __init__(self):
        super().__init__()
        self.setWindowTitle("按钮联动画图")

        # 主窗口
        self.resize(600, 350)

        # 窗口布局
        self.my_widget_h_box = QVBoxLayout()

        # 按钮区域
        self.check_box_widget = QWidget()
        self.check_box_layout = QHBoxLayout()
        self.check_box_widget.setLayout(self.check_box_layout)

        # 按钮布局
        self.check_box1 = QCheckBox("按钮1")
        self.check_box1.setChecked(True)
        self.check_box2 = QCheckBox("按钮2")
        self.check_box2.setChecked(True)
        self.check_box3 = QCheckBox("按钮3")
        self.check_box3.setChecked(True)
        self.check_box_layout.addWidget(self.check_box1)
        self.check_box_layout.addWidget(self.check_box2)
        self.check_box_layout.addWidget(self.check_box3)

        # 画板区域
        self.pg_widget = QWidget()
        self.pg_widget_layout = QHBoxLayout()
        self.pg_widget.setLayout(self.pg_widget_layout)

        # 画布区域
        self.pg_plot_widget = PlotWidget()
        # 设置坐标轴
        self.pg_plot_widget.setLabel('left', 'Y')
        self.pg_plot_widget.setLabel('bottom', 'X')

        # 准备要画的线a, b, c为数据
        self.line_green = self.pg_plot_widget.plot(a, pen=pg.mkPen('g', width=2), name="绿色曲线")
        self.line_red = self.pg_plot_widget.plot(b, pen=pg.mkPen('r', width=2), name="红色曲线")
        self.line_blue = self.pg_plot_widget.plot(c, pen=pg.mkPen('b', width=2), name="蓝色曲线")

        self.pg_widget_layout.addWidget(self.pg_plot_widget)
        self.my_widget_h_box.addWidget(self.check_box_widget)
        self.my_widget_h_box.addWidget(self.pg_widget)

        # 全局layout
        self.setLayout(self.my_widget_h_box)

        # 绑定槽函数
        self.check_box1.stateChanged.connect(lambda: self.check_box_slot(self.check_box1, self.line_green))
        self.check_box2.stateChanged.connect(lambda: self.check_box_slot(self.check_box2, self.line_red))
        self.check_box3.stateChanged.connect(lambda: self.check_box_slot(self.check_box3, self.line_blue))

    def check_box_slot(self, check_box, line):
        """
        绑定槽函数
        """
        if check_box.isChecked():
            self.pg_plot_widget.addItem(line)
        else:
            self.pg_plot_widget.removeItem(line)


if __name__ == '__main__':
    app = QApplication([])
    windows = Windows()
    windows.show()
    app.exec_()

  • 8
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值