PySide 및 Qt 디자이너로 만든 GUI에 대한 도움이 필요합니다. 내 Gui 코드에서 PlotWidget 어디 pyqtgraph 구현하고 싶습니다.PlotWidget GUI에서 실시간 pyqtgraph 실행
PyQtGraph 내가 인터넷 : graph.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_()
이 명령 줄없이 실행> 파이썬> 수입 graph.py을 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
그리고 내 주요 programm에 :
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에서 작동하는 이벤트를 말합니다 ...
난 내 GUI를 실행 pyqtgraph을 구현할 수있는 방법을 제안하십시오 :
가 수정 된 코드에 대한 감사 :
감사합니다 당신이 아주 많이!
, 당신은 당신의 Ui_MainDialog 인스턴스를 표시/생성, 당신은의 QApplication 인스턴스를 만들 장소를 가지고 있고, exec_를 호출해야합니다. showBOX의 마지막 줄을 제거하기 만하면됩니다. – mdurant
Hello Mdurant, 내 showBOX 그래프에서 마지막 줄을 제거하지 않을 때 .. –
MainDialog를 "main program"에서 어떻게 인스턴스화합니까? – mdurant