使用到的库版本
效果预览
勾选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_()