Plot in GUI einbinden

Python und das Qt-Toolkit, erstellen von GUIs mittels des Qt-Designers.
Antworten
pandabaer
User
Beiträge: 1
Registriert: Mittwoch 8. Juli 2015, 20:18

Hallo zusammen!

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_())

Antworten