Ich habe eine Frage (eher eine verzweifelte Bitte) zu einem Projekt von mir:
Es geht darum, dass ich ein GUI mit QT Designer erstellt habe und nun versuche, eine Funktion so einzubinden, dass ich auf einem pyqtgraph.PlotWidget() einen echtzeit-Plot sehe. Die Funktion klappt soweit, nur dass sie auf einem externen Fenster abläuft. Könnt ihr mir dabei helfen, sie ins richtige Fenster zu bekommen? Ich möchte das, was die Funktion plotData ausspuckt, gerne im ECGPPG Widget haben.
Viele Grüße und ein freundliches Danke,
Alex
p.s.: Anstelle von "Patient" kann man ein beliebiges Array ordentlicher länge nehmen.
Anbei der Code:
Code: Alles auswählen
from scipy.io import *
import scipy.signal as signal
import numpy as np
from matplotlibwidget import MatplotlibWidget
from PyQt4 import QtCore, QtGui
from PyQt4.QtCore import Qt
from PyQt4.QtGui import QApplication, QMainWindow, QDockWidget, QFileDialog
import pyqtgraph
import sys
#define global variables
filepath = " "
Patient = loadmat('ID41.mat')
Patient = Patient['data_block1'][0]
plot = ""
StartStop = True
def fileSelect():
global filepath
dialog = QFileDialog()
dialog.exec_()
for file in dialog.selectedFiles():
filepath = file
setPatient(filepath)
print filepath
global Patient
Patient = loadmat(filepath)
Patient = Patient['data_block1'][0]
def stopPlot():
global StartStop
StartStop = False
def plotData():
global Patient
global StartStop
StartStop = True
x0 = np.linspace(0,0.001*len(Patient),len(Patient))
y0 = np.sin(Patient)
i = 0
test = pyqtgraph.plot()
while StartStop:
x = x0[i:2000+i]
y = y0[i:2000+i]
test.plot(x, y, clear=True)
pyqtgraph.QtGui.QApplication.processEvents()
i = i+1
def setPatient(filepath):
global Patient
Patient = loadmat('ID41')
Patient = Patient['data_block1'][0]
def hello():
print "hello world"
try:
_fromUtf8 = QtCore.QString.fromUtf8
except AttributeError:
def _fromUtf8(s):
return s
try:
_encoding = QtGui.QApplication.UnicodeUTF8
def _translate(context, text, disambig):
return QtGui.QApplication.translate(context, text, disambig, _encoding)
except AttributeError:
def _translate(context, text, disambig):
return QtGui.QApplication.translate(context, text, disambig)
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
MainWindow.setObjectName(_fromUtf8("MainWindow"))
MainWindow.resize(809, 524)
self.centralwidget = QtGui.QWidget(MainWindow)
self.centralwidget.setObjectName(_fromUtf8("centralwidget"))
self.pushButton = QtGui.QPushButton(self.centralwidget)
self.pushButton.setGeometry(QtCore.QRect(630, 340, 75, 23))
self.pushButton.setObjectName(_fromUtf8("pushButton"))
self.pushButton_2 = QtGui.QPushButton(self.centralwidget)
self.pushButton_2.setGeometry(QtCore.QRect(630, 370, 75, 23))
self.pushButton_2.setObjectName(_fromUtf8("pushButton_2"))
self.ECGPPG = pyqtgraph.PlotWidget(self.centralwidget)
self.ECGPPG.setGeometry(QtCore.QRect(20, 10, 400, 300))
self.ECGPPG.setObjectName(_fromUtf8("ECGPPG"))
self.pushButton_3 = QtGui.QPushButton(self.centralwidget)
self.pushButton_3.setGeometry(QtCore.QRect(720, 340, 75, 23))
self.pushButton_3.setObjectName(_fromUtf8("pushButton_3"))
self.horizontalSlider = QtGui.QSlider(self.centralwidget)
self.horizontalSlider.setGeometry(QtCore.QRect(140, 420, 160, 22))
self.horizontalSlider.setMinimum(1)
self.horizontalSlider.setMaximum(100)
self.horizontalSlider.setOrientation(QtCore.Qt.Horizontal)
self.horizontalSlider.setTickPosition(QtGui.QSlider.TicksBelow)
self.horizontalSlider.setTickInterval(5)
self.horizontalSlider.setObjectName(_fromUtf8("horizontalSlider"))
self.horizontalSlider_2 = QtGui.QSlider(self.centralwidget)
self.horizontalSlider_2.setGeometry(QtCore.QRect(140, 450, 161, 20))
self.horizontalSlider_2.setMouseTracking(False)
self.horizontalSlider_2.setAutoFillBackground(False)
self.horizontalSlider_2.setMinimum(1)
self.horizontalSlider_2.setMaximum(100)
self.horizontalSlider_2.setSingleStep(-1)
self.horizontalSlider_2.setOrientation(QtCore.Qt.Horizontal)
#self.horizontalSlider_2.setInvertedAppearance(True)
self.horizontalSlider_2.setTickPosition(QtGui.QSlider.TicksBelow)
self.horizontalSlider_2.setTickInterval(5)
self.horizontalSlider_2.setObjectName(_fromUtf8("horizontalSlider_2"))
self.lineEdit_2 = QtGui.QLineEdit(self.centralwidget)
self.lineEdit_2.setGeometry(QtCore.QRect(150, 340, 113, 20))
self.lineEdit_2.setAcceptDrops(True)
self.lineEdit_2.setFrame(False)
self.lineEdit_2.setObjectName(_fromUtf8("lineEdit_2"))
self.lineEdit_3 = QtGui.QLineEdit(self.centralwidget)
self.lineEdit_3.setGeometry(QtCore.QRect(310, 420, 31, 20))
self.lineEdit_3.setAcceptDrops(True)
self.lineEdit_3.setFrame(False)
self.lineEdit_3.setObjectName(_fromUtf8("lineEdit_3"))
self.lineEdit_4 = QtGui.QLineEdit(self.centralwidget)
self.lineEdit_4.setGeometry(QtCore.QRect(310, 450, 41, 20))
self.lineEdit_4.setAcceptDrops(True)
self.lineEdit_4.setFrame(False)
self.lineEdit_4.setObjectName(_fromUtf8("lineEdit_4"))
self.checkBox_6 = QtGui.QCheckBox(self.centralwidget)
self.checkBox_6.setGeometry(QtCore.QRect(520, 370, 91, 16))
self.checkBox_6.setText(_fromUtf8(""))
self.checkBox_6.setObjectName(_fromUtf8("checkBox_6"))
self.lineEdit_5 = QtGui.QLineEdit(self.centralwidget)
self.lineEdit_5.setGeometry(QtCore.QRect(500, 340, 101, 20))
self.lineEdit_5.setObjectName(_fromUtf8("lineEdit_5"))
self.checkBox_7 = QtGui.QCheckBox(self.centralwidget)
self.checkBox_7.setGeometry(QtCore.QRect(520, 400, 81, 16))
self.checkBox_7.setText(_fromUtf8(""))
self.checkBox_7.setObjectName(_fromUtf8("checkBox_7"))
self.checkBox_5 = QtGui.QCheckBox(self.centralwidget)
self.checkBox_5.setGeometry(QtCore.QRect(570, 370, 81, 16))
self.checkBox_5.setText(_fromUtf8(""))
self.checkBox_5.setObjectName(_fromUtf8("checkBox_5"))
self.checkBox_9 = QtGui.QCheckBox(self.centralwidget)
self.checkBox_9.setGeometry(QtCore.QRect(20, 370, 91, 16))
self.checkBox_9.setObjectName(_fromUtf8("checkBox_9"))
self.lineEdit_6 = QtGui.QLineEdit(self.centralwidget)
self.lineEdit_6.setGeometry(QtCore.QRect(20, 340, 41, 20))
self.lineEdit_6.setObjectName(_fromUtf8("lineEdit_6"))
self.checkBox_10 = QtGui.QCheckBox(self.centralwidget)
self.checkBox_10.setGeometry(QtCore.QRect(20, 390, 91, 16))
self.checkBox_10.setObjectName(_fromUtf8("checkBox_10"))
self.checkBox_11 = QtGui.QCheckBox(self.centralwidget)
self.checkBox_11.setGeometry(QtCore.QRect(20, 420, 91, 16))
self.checkBox_11.setObjectName(_fromUtf8("checkBox_11"))
self.checkBox_12 = QtGui.QCheckBox(self.centralwidget)
self.checkBox_12.setGeometry(QtCore.QRect(20, 450, 91, 16))
self.checkBox_12.setObjectName(_fromUtf8("checkBox_12"))
self.lineEdit_7 = QtGui.QLineEdit(self.centralwidget)
self.lineEdit_7.setGeometry(QtCore.QRect(460, 370, 31, 20))
self.lineEdit_7.setObjectName(_fromUtf8("lineEdit_7"))
self.lineEdit_8 = QtGui.QLineEdit(self.centralwidget)
self.lineEdit_8.setGeometry(QtCore.QRect(450, 400, 51, 20))
self.lineEdit_8.setObjectName(_fromUtf8("lineEdit_8"))
self.pushButton_4 = QtGui.QPushButton(self.centralwidget)
self.pushButton_4.setGeometry(QtCore.QRect(720, 370, 75, 23))
self.pushButton_4.setObjectName(_fromUtf8("pushButton_4"))
self.horizontalSlider_3 = QtGui.QSlider(self.centralwidget)
self.horizontalSlider_3.setGeometry(QtCore.QRect(140, 380, 161, 22))
self.horizontalSlider_3.setAutoFillBackground(False)
self.horizontalSlider_3.setMinimum(1)
self.horizontalSlider_3.setMaximum(100)
self.horizontalSlider_3.setPageStep(10)
self.horizontalSlider_3.setProperty("value", 1)
self.horizontalSlider_3.setOrientation(QtCore.Qt.Horizontal)
self.horizontalSlider_3.setTickPosition(QtGui.QSlider.TicksBelow)
self.horizontalSlider_3.setTickInterval(5)
self.horizontalSlider_3.setObjectName(_fromUtf8("horizontalSlider_3"))
self.Sprectrum = pyqtgraph.PlotWidget(self.centralwidget)
self.Sprectrum.setGeometry(QtCore.QRect(430, 10, 361, 301))
self.Sprectrum.setObjectName(_fromUtf8("Sprectrum"))
self.checkBox_8 = QtGui.QCheckBox(self.centralwidget)
self.checkBox_8.setGeometry(QtCore.QRect(570, 400, 81, 16))
self.checkBox_8.setText(_fromUtf8(""))
self.checkBox_8.setObjectName(_fromUtf8("checkBox_8"))
self.pushButton_5 = QtGui.QPushButton(self.centralwidget)
self.pushButton_5.setGeometry(QtCore.QRect(630, 400, 161, 51))
self.pushButton_5.setAutoFillBackground(False)
self.pushButton_5.setDefault(False)
self.pushButton_5.setFlat(False)
self.pushButton_5.setObjectName(_fromUtf8("pushButton_5"))
self.lcdNumber = QtGui.QLCDNumber(self.centralwidget)
self.lcdNumber.setGeometry(QtCore.QRect(360, 450, 64, 23))
self.lcdNumber.setAutoFillBackground(True)
self.lcdNumber.setSmallDecimalPoint(False)
self.lcdNumber.setSegmentStyle(QtGui.QLCDNumber.Flat)
self.lcdNumber.setProperty("intValue", 100)
self.lcdNumber.setObjectName(_fromUtf8("lcdNumber"))
self.lcdNumber_2 = QtGui.QLCDNumber(self.centralwidget)
self.lcdNumber_2.setGeometry(QtCore.QRect(360, 420, 64, 23))
self.lcdNumber_2.setAutoFillBackground(True)
self.lcdNumber_2.setSegmentStyle(QtGui.QLCDNumber.Flat)
self.lcdNumber_2.setProperty("intValue", 1)
self.lcdNumber_2.setObjectName(_fromUtf8("lcdNumber_2"))
self.lcdNumber_3 = QtGui.QLCDNumber(self.centralwidget)
self.lcdNumber_3.setGeometry(QtCore.QRect(360, 380, 64, 23))
self.lcdNumber_3.setAutoFillBackground(True)
self.lcdNumber_3.setSegmentStyle(QtGui.QLCDNumber.Flat)
self.lcdNumber_3.setProperty("intValue", 1)
self.lcdNumber_3.setObjectName(_fromUtf8("lcdNumber_3"))
MainWindow.setCentralWidget(self.centralwidget)
self.menubar = QtGui.QMenuBar(MainWindow)
self.menubar.setGeometry(QtCore.QRect(0, 0, 809, 21))
self.menubar.setObjectName(_fromUtf8("menubar"))
self.menuECG_PPG_Analysis = QtGui.QMenu(self.menubar)
self.menuECG_PPG_Analysis.setObjectName(_fromUtf8("menuECG_PPG_Analysis"))
MainWindow.setMenuBar(self.menubar)
self.statusbar = QtGui.QStatusBar(MainWindow)
self.statusbar.setObjectName(_fromUtf8("statusbar"))
MainWindow.setStatusBar(self.statusbar)
self.menubar.addAction(self.menuECG_PPG_Analysis.menuAction())
self.retranslateUi(MainWindow)
QtCore.QObject.connect(self.horizontalSlider_2, QtCore.SIGNAL(_fromUtf8("valueChanged(int)")), self.lcdNumber.display)
QtCore.QObject.connect(self.horizontalSlider, QtCore.SIGNAL(_fromUtf8("valueChanged(int)")), self.lcdNumber_2.display)
QtCore.QObject.connect(self.horizontalSlider_3, QtCore.SIGNAL(_fromUtf8("valueChanged(int)")), self.lcdNumber_3.display)
QtCore.QMetaObject.connectSlotsByName(MainWindow)
##assign buttons functions
QtCore.QObject.connect(self.pushButton_5, QtCore.SIGNAL(_fromUtf8("clicked()")), MainWindow.close)
QtCore.QObject.connect(self.pushButton, QtCore.SIGNAL(_fromUtf8("clicked()")), plotData)
QtCore.QObject.connect(self.pushButton_2, QtCore.SIGNAL(_fromUtf8("clicked()")), stopPlot)
QtCore.QObject.connect(self.pushButton_4, QtCore.SIGNAL(_fromUtf8("clicked()")), fileSelect)
def retranslateUi(self, MainWindow):
MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow", None))
self.pushButton.setText(_translate("MainWindow", "Play", None))
self.pushButton_2.setText(_translate("MainWindow", "Stop", None))
self.pushButton_3.setText(_translate("MainWindow", "Save", None))
self.lineEdit_2.setText(_translate("MainWindow", "Cut off frequencies", None))
self.lineEdit_3.setText(_translate("MainWindow", "lower", None))
self.lineEdit_4.setText(_translate("MainWindow", "higher", None))
self.lineEdit_5.setText(_translate("MainWindow", " ECG PPG", None))
self.checkBox_9.setText(_translate("MainWindow", "High-pass", None))
self.lineEdit_6.setText(_translate("MainWindow", " Filter", None))
self.checkBox_10.setText(_translate("MainWindow", "Low-pass", None))
self.checkBox_11.setText(_translate("MainWindow", "Band-pass", None))
self.checkBox_12.setText(_translate("MainWindow", "Band-stop", None))
self.lineEdit_7.setText(_translate("MainWindow", "Raw", None))
self.lineEdit_8.setText(_translate("MainWindow", " Filtered", None))
self.pushButton_4.setText(_translate("MainWindow", "File", None))
self.pushButton_5.setText(_translate("MainWindow", "Close", None))
self.menuECG_PPG_Analysis.setTitle(_translate("MainWindow", "ECG PPG Analysis", None))
if __name__ == "__main__":
app = QtGui.QApplication(sys.argv)
MainWindow = QtGui.QMainWindow()
ui = Ui_MainWindow()
ui.setupUi(MainWindow)
MainWindow.show()
sys.exit(app.exec_())