PyQtGraph的滑块小部件

蒂亚戈

是否可以获取PyQtGraph的滑块小部件?因此,例如一个或多个小部件可以控制绘图中的参数。像下面的例子一样(用enaml / chaco制成):

在此处输入图片说明

在示例或PyQtGraph小部件列表中,我什么都找不到。也许可以使用来自Qt的小部件并将其链接到PyQtGraph绘图对象?

永乐

可以使用pyqtgraph旁边的任何Qt小部件,pyqtgraph的图形对象是从QWidget继承的,也就是说,它们是泛型小部件。这是一个例子。

import sys

from PyQt5.QtCore import Qt
from PyQt5.QtWidgets import QApplication, QHBoxLayout, QLabel, QSizePolicy, QSlider, QSpacerItem, \
    QVBoxLayout, QWidget

import pyqtgraph as pg
import numpy as np


class Slider(QWidget):
    def __init__(self, minimum, maximum, parent=None):
        super(Slider, self).__init__(parent=parent)
        self.verticalLayout = QVBoxLayout(self)
        self.label = QLabel(self)
        self.verticalLayout.addWidget(self.label)
        self.horizontalLayout = QHBoxLayout()
        spacerItem = QSpacerItem(0, 20, QSizePolicy.Expanding, QSizePolicy.Minimum)
        self.horizontalLayout.addItem(spacerItem)
        self.slider = QSlider(self)
        self.slider.setOrientation(Qt.Vertical)
        self.horizontalLayout.addWidget(self.slider)
        spacerItem1 = QSpacerItem(0, 20, QSizePolicy.Expanding, QSizePolicy.Minimum)
        self.horizontalLayout.addItem(spacerItem1)
        self.verticalLayout.addLayout(self.horizontalLayout)
        self.resize(self.sizeHint())

        self.minimum = minimum
        self.maximum = maximum
        self.slider.valueChanged.connect(self.setLabelValue)
        self.x = None
        self.setLabelValue(self.slider.value())

    def setLabelValue(self, value):
        self.x = self.minimum + (float(value) / (self.slider.maximum() - self.slider.minimum())) * (
        self.maximum - self.minimum)
        self.label.setText("{0:.4g}".format(self.x))


class Widget(QWidget):
    def __init__(self, parent=None):
        super(Widget, self).__init__(parent=parent)
        self.horizontalLayout = QHBoxLayout(self)
        self.w1 = Slider(-10, 10)
        self.horizontalLayout.addWidget(self.w1)

        self.w2 = Slider(-1, 1)
        self.horizontalLayout.addWidget(self.w2)

        self.w3 = Slider(-10, 10)
        self.horizontalLayout.addWidget(self.w3)

        self.w4 = Slider(-10, 10)
        self.horizontalLayout.addWidget(self.w4)

        self.win = pg.GraphicsWindow(title="Basic plotting examples")
        self.horizontalLayout.addWidget(self.win)
        self.p6 = self.win.addPlot(title="My Plot")
        self.curve = self.p6.plot(pen='r')
        self.update_plot()

        self.w1.slider.valueChanged.connect(self.update_plot)
        self.w2.slider.valueChanged.connect(self.update_plot)
        self.w3.slider.valueChanged.connect(self.update_plot)
        self.w4.slider.valueChanged.connect(self.update_plot)

    def update_plot(self):
        a = self.w1.x
        b = self.w2.x
        c = self.w3.x
        d = self.w4.x
        x = np.linspace(0, 10, 100)
        data = a + np.cos(x + c * np.pi / 180) * np.exp(-b * x) * d
        self.curve.setData(data)


if __name__ == '__main__':
    app = QApplication(sys.argv)
    w = Widget()
    w.show()
    sys.exit(app.exec_())

在此处输入图片说明

在此处输入图片说明

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

带滑块的Qt小部件

PyQtGraph图形布局小部件问题

在pyqtgraph中导出小部件的图像

pyqtgraph情节小部件未更新

标题栏中的滑块小部件

如何禁用材质滑块小部件

VTK Iso 滑块不工作或不显示滑块小部件

在网络上显示pyqtgraph和pyqt小部件

pyqtgraph 交叉小部件绘制不起作用?

如何增加Flutter滑块小部件的“触摸区域”?

悬停工具,用于Plotly滑块小部件(Python)

matplotlib中带有滑块小部件的日期时间

如何使Tkinter Scale小部件的滑块从某个位置开始?

将值设置为jquery小部件滑块

带刻度文本标签的Qt滑块小部件

带有pandas数据框的滑块小部件

使用滑块按钮创建分段控件小部件-Flutter

如何使用mabplotlib中的小部件滑块设置时间间隔

如何删除使用滑块小部件添加的 axhline

将pyqtgraph嵌入到选项卡小部件Pyqt中

如何将鼠标单击的信号连接到pyqtgraph图小部件

如何在kivy中获取在屏幕小部件内定义的滑块的值

在mouseup上触发事件,而不是连续使用面板滑块小部件触发事件

Jupyter Notebook-链接两个滑块小部件,以向值添加偏移量

在matplotlib小部件中单击按钮时提取/打印滑块值(Python 2.7)

如何以离散步骤使用tkinter滑块`Scale`小部件?

如何使一个滑块/小部件更新Bokeh / Python / Pywidget中的多个图?

产品相关的小部件,如价格滑块在 woocommerce 中不起作用

如何将QVideoWidget设置为全屏并在全屏小部件中具有音量滑块?