- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我在使用 PySide 和 Qt Designer 制作的 GUI 方面需要一些帮助。在我的 Gui 代码中,我有 PlotWidget,我想在其中实现 pyqtgraph。
我正在尝试实现的 PyQtGraph 代码(我在互联网上找到的一些示例:)图.py:
import pyqtgraph as pg
import numpy as np
plt = pg.plot()
bufferSize = 1000
data = np.zeros(bufferSize)
curve = plt.plot()
line = plt.addLine(x=0)
plt.setRange(xRange=[0, bufferSize], yRange=[-50, 50])
i = 0
def update():
global data, curve, line, i
n = 10 # update 10 samples per iteration
rand = np.random.normal(size=n)
data[i:i+n] = np.clip(data[i-1] + rand, -50, 50)
curve.setData(data)
i = (i+n) % bufferSize
line.setValue(i)
timer = pg.QtCore.QTimer()
timer.timeout.connect(update)
timer.start(20)
pg.QtGui.QApplication.instance().exec_()
这是在没有命令行的情况下运行> python> import graph.py due to pg.QtGui.QApplication.instance().exec_()
line
现在我想在我的 GUI 中的 Plot Widget 中运行这个随机绘图。
来自 QtDesigner 的代码:
from PySide import QtCore, QtGui
class Ui_MainDialog(object):
def setupUi(self, MainDialog):
MainDialog.setObjectName("MainDialog")
MainDialog.resize(400, 300)
self.nameEdit = QtGui.QLineEdit(MainDialog)
self.nameEdit.setGeometry(QtCore.QRect(30, 50, 181, 31))
self.nameEdit.setText("")
self.nameEdit.setObjectName("nameEdit")
self.showButton = QtGui.QPushButton(MainDialog)
self.showButton.setGeometry(QtCore.QRect(250, 50, 101, 31))
self.showButton.setObjectName("showButton")
self.MainGraph = PlotWidget(MainDialog)
self.MainGraph.setGeometry(QtCore.QRect(70, 100, 256, 192))
self.MainGraph.setObjectName("MainGraph")
self.retranslateUi(MainDialog)
QtCore.QMetaObject.connectSlotsByName(MainDialog)
MainDialog.setTabOrder(self.showButton, self.nameEdit)
MainDialog.setTabOrder(self.nameEdit, self.MainGraph)
def retranslateUi(self, MainDialog):
MainDialog.setWindowTitle(QtGui.QApplication.translate("MainDialog", "MainDialog", None, QtGui.QApplication.UnicodeUTF8))
self.nameEdit.setPlaceholderText(QtGui.QApplication.translate("MainDialog", "Log Window", None, QtGui.QApplication.UnicodeUTF8))
self.showButton.setText(QtGui.QApplication.translate("MainDialog", "Show Graph!", None, QtGui.QApplication.UnicodeUTF8))
from pyqtgraph import PlotWidget
现在我的主要程序:
from PySide.QtCore import *
from PySide.QtGui import *
import example3
import sys
class Maindialog(QDialog,example3.Ui_MainDialog):
def __init__(self, parent=None):
super(Maindialog,self).__init__(parent)
self.setupUi(self)
self.connect(self.showButton,SIGNAL("clicked()"),self.showBOX)
def showBOX(self):
QMessageBox.information(self, "hello", "hello there " + self.nameEdit.text())
print"hello world"
plt=self.MainGraph
#z.plot(x = [0, 1, 2, 4,7,8,9,0], y = [4, 5, 9, 6,1,2,3,4])
import numpy as np
import pyqtgraph as pg
bufferSize = 1000
data = np.zeros(bufferSize)
curve = plt.plot()
curve.setData()
line = plt.addLine(x=0)
plt.setRange(xRange=[0, bufferSize], yRange=[-50, 50])
i = 0
def update():
global data, curve, line, i
n = 10 # update 10 samples per iteration
rand = np.random.normal(size=n)
data[i:i+n] = np.clip(data[i-1] + rand, -50, 50)
curve.setData(data)
i = (i+n) % bufferSize
line.setValue(i)
timer = pg.QtCore.QTimer()
timer.timeout.connect(update)
timer.start(20)
if (sys.flags.interactive != 1) or not hasattr(QtCore, 'PYQT_VERSION'):
pg.QtGui.QApplication.instance().exec_()
我有错误 QCoreApplication::exec: The event loop is already running
部分我理解这个问题,Pyqtgraph 是用 PyQt 本身制作的,当我要求它运行事件(更新实时图形)时,它说事件已经从主 gui 开始工作......
请建议我如何在我的图形用户界面上运行 pyqtgraph:
感谢修改后的代码:
非常感谢!
最佳答案
需要对您的函数进行这些更改:所有这些更改都是为了保留这些变量。在我的系统上,我有特定的错误,指出变量未定义以帮助解决这个问题。
def showBOX(self):
QMessageBox.information(self, "hello", "hello there " + self.nameEdit.text())
print"hello world"
plt=self.MainGraph
#z.plot(x = [0, 1, 2, 4,7,8,9,0], y = [4, 5, 9, 6,1,2,3,4])
import numpy as np
import pyqtgraph as pg
bufferSize = 1000
self.data = np.zeros(bufferSize)
self.curve = plt.plot()
self.curve.setData()
self.line = plt.addLine(x=0)
plt.setRange(xRange=[0, bufferSize], yRange=[-50, 50])
self.i = 0
def update():
n = 10 # update 10 samples per iteration
rand = np.random.normal(size=n)
self.data[self.i:self.i+n] = np.clip(self.data[self.i-1] + rand, -50, 50)
self.curve.setData(self.data)
self.i = (self.i+n) % bufferSize
self.line.setValue(self.i)
self.update = update
self.timer = pg.QtCore.QTimer()
self.timer.timeout.connect(self.update)
self.timer.start(20)
关于python - 在 PlotWidget GUI 中运行实时 pyqtgraph,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26314995/
我正在尝试使用 PyQt 绘图小部件创建实时数据图。我读到 PyQt 是绘制实时图表的最佳选择,但到目前为止我还没有取得任何成功。 我尝试使用方法 followed here 绘制随机数据然而,这种方
我正在尝试构建一个桌面应用程序,该应用程序将在一些流数据到达时绘制图表。我希望能够打开多个窗口来监控不同的流。 在我开始关闭图表窗口之前,它工作得很好。 我遇到的问题是,关闭我的一个图表窗口经常会导致
我正在制作一个时间序列监控程序。 我想从 x 轴范围的一半开始更改绘图的颜色。对于 100 x 20 的绘图小部件,我想将最后 50 个数据点更改为另一种颜色。 每传递 xx 项数据时,如何绘制自定义
这是我的代码: import sys import numpy as np import pyqtgraph as pg from PyQt5.QtWidgets import QApplicatio
我正在尝试将 pyqtgraph 中的自定义 AxisItem 添加到由 Qt Designer 生成的现有 PlotWidget。有相关话题here ,但是没有代码示例的确切答案,我无法发表评论,所
我正在尝试将样式设置为 pyqtgraph.PlotWidget 绘图区域的轴。我正在使用: font = QFont() font.setPointSize(14) font.setBold(Tru
我在使用 PySide 和 Qt Designer 制作的 GUI 方面需要一些帮助。在我的 Gui 代码中,我有 PlotWidget,我想在其中实现 pyqtgraph。 我正在尝试实现的 PyQ
作为问题的延续,我已经解决了 here几天前,我有一个 PyQt4 GUI,它嵌入了两个 PyQtGraph 的 PlotWidgets,每个 PlotWidgets 从一个按钮触发的线程随机附加数组
我在网格中放置了一些小部件。但这些小部件始终存在奇怪的行为。 如果将一个 ImageView 和 PlotWidget 放在附近,ImageView 会收缩,PlotWidged 会拉伸(stretc
我正在尝试制作一个应用程序,我想在其中使用多个 PlotWidgets 来绘制来 self 的 Arduino 中最多 5 个传感器的信号。一旦我有两个更新图,GUI 就没有响应,我需要暂停/重新开始
如何使 x 轴刻度加粗? plot_1 = pg.PlotWidget() plot_1.setBackground('w') pen = pg.mkPen(color="k", width=3, s
我正在尝试在 PyQt5 的 pqytplot plotwidget 中添加光标位置的读数。我发现这段代码可以满足我的要求,但在一个独立的窗口中,所有内容都在一个程序文件中: import pyqtg
我正在尝试使 PlotWidget 移动(从左到右)非常快,就像它是心电图一样。这是我想要的示例(除了他使用 PyQwt(这与我的项目不兼容,因为我使用 PySide(而不是 PyQt),而且我也希望
我是一名优秀的程序员,十分优秀!