欢迎访问宙启技术站
智能推送

Python图形化编程:使用PyQtGraph.Qt.QtGui.QMainWindow创建带有滑动条的窗口

发布时间:2023-12-13 12:43:13

PyQtGraph是一个用于绘制科学图形的Python库。它是PyQt(一个基于Qt开发的Python库)的一个扩展,可以轻松地创建图形界面和交互式图表。

使用PyQtGraph创建一个带有滑动条的窗口,可以按照以下步骤进行操作:

1. 安装PyQtGraph库。可以使用pip命令在命令行中运行以下命令进行安装:

pip install pyqtgraph

2. 导入必要的库和模块:

import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QVBoxLayout, QSlider, QLabel
from PyQt5.QtCore import Qt
import pyqtgraph as pg

3. 创建一个自定义的MainWindow类,继承自QMainWindow:

class MyWindow(QMainWindow):
    def __init__(self):
        super().__init__()

        # 设置窗口标题等属性
        self.setWindowTitle("滑动条窗口")

        # 创建一个滑动条和标签
        self.slider = QSlider(Qt.Horizontal)
        self.slider.setMinimum(0)
        self.slider.setMaximum(100)
        self.label = QLabel('0')

        # 创建一个PyQtGraph绘图窗口
        self.plot = pg.PlotWidget()

        # 创建一个垂直布局,添加滑动条和标签
        layout = QVBoxLayout()
        layout.addWidget(self.slider)
        layout.addWidget(self.label)

        # 设置主窗口的中心窗口,添加PlotWidget和布局
        central_widget = QWidget()
        central_widget.setLayout(layout)
        self.setCentralWidget(central_widget)

        # 绑定滑动条的valueChanged信号和槽函数update_plot
        self.slider.valueChanged.connect(self.update_plot)

4. 创建一个槽函数update_plot,用于更新绘图窗口的内容:

def update_plot(self):
    # 获取滑动条的值
    value = self.slider.value()

    # 更新标签的文本
    self.label.setText(str(value))

    # 清除绘图窗口的内容
    self.plot.clear()

    # 创建绘图数据
    x = range(100)
    y = [value * xi for xi in x]

    # 绘制折线图
    self.plot.plot(x, y)

5. 创建一个应用程序对象,并启动主事件循环:

if __name__ == "__main__":
    app = QApplication(sys.argv)
    window = MyWindow()
    window.show()
    sys.exit(app.exec_())

这样,就可以创建一个带有滑动条的窗口,并在滑动条值改变时更新绘图窗口的内容。

完整的示例代码如下:

import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QVBoxLayout, QSlider, QLabel, QWidget
from PyQt5.QtCore import Qt
import pyqtgraph as pg


class MyWindow(QMainWindow):
    def __init__(self):
        super().__init__()

        # 设置窗口标题等属性
        self.setWindowTitle("滑动条窗口")

        # 创建一个滑动条和标签
        self.slider = QSlider(Qt.Horizontal)
        self.slider.setMinimum(0)
        self.slider.setMaximum(100)
        self.label = QLabel('0')

        # 创建一个PyQtGraph绘图窗口
        self.plot = pg.PlotWidget()

        # 创建一个垂直布局,添加滑动条和标签
        layout = QVBoxLayout()
        layout.addWidget(self.slider)
        layout.addWidget(self.label)

        # 设置主窗口的中心窗口,添加PlotWidget和布局
        central_widget = QWidget()
        central_widget.setLayout(layout)
        self.setCentralWidget(central_widget)

        # 绑定滑动条的valueChanged信号和槽函数update_plot
        self.slider.valueChanged.connect(self.update_plot)

    def update_plot(self):
        # 获取滑动条的值
        value = self.slider.value()

        # 更新标签的文本
        self.label.setText(str(value))

        # 清除绘图窗口的内容
        self.plot.clear()

        # 创建绘图数据
        x = range(100)
        y = [value * xi for xi in x]

        # 绘制折线图
        self.plot.plot(x, y)


if __name__ == "__main__":
    app = QApplication(sys.argv)
    window = MyWindow()
    window.show()
    sys.exit(app.exec_())

这样,就完成了使用PyQtGraph创建带有滑动条的窗口的编程。