Hi,

I would suggest a slightly different way of using the .ui files from Qt 
Designer/Creator, and that is to dynamically load the .ui instead of 
manually generating code using the pyuic tool. This way it's easier to 
modify the .ui, and keep all the code separate.
Here's an example:

#!/usr/bin/env python3

import sys
from PyQt5 import QtCore, QtGui, QtWidgets, uic
import numpy as np
import pyqtgraph as pg

class PlotWindow(QtWidgets.QMainWindow):

    def __init__(self):
        super().__init__()

        # Load GUI layout from .ui file (named same as this source file, 
but with .ui extension)
        uic.loadUi(__file__.split('.py')[0] + '.ui', self)

        # Finish up the GUI and connections
        self.lineEdit.setText("Some text")
        self.pushButton.clicked.connect(self.pushButton_clicked)
        self.pushButton_2.clicked.connect(self.pushButton_2_clicked)
        # ...

        # Store your data here in the class (instead of using global 
variables)
        self.y = np.random.normal(size=300)
        self.curve1 = self.plotWidget.plot(self.y)

        self.timer = pg.QtCore.QTimer()
        self.timer.timeout.connect(self.update)
        self.timer.start(40)

    def pushButton_clicked(self):
        self.statusbar.showMessage('pushButton clicked...')

    def pushButton_2_clicked(self):
        self.statusbar.showMessage('pushButton_2 clicked...')

    def update(self):
        self.y[:-1] = self.y[1:]  # shift data in the array one sample left
                                  # (see also: np.roll)
        self.y[-1] = np.random.normal() # continua grafiacando a partir del 
ultimo punto graficado
        self.curve1.setData(self.y)   

def main():
    app = QtWidgets.QApplication(sys.argv)
    mainwindow = PlotWindow()
    mainwindow.show()
    sys.exit(app.exec_())

if __name__ == '__main__':
    main()

and for completeness, here's the contents of the .ui file (name it same as 
python source file above, but with .ui extension):

<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
 <class>MainWindow</class>
 <widget class="QMainWindow" name="MainWindow">
  <property name="geometry">
   <rect>
    <x>0</x>
    <y>0</y>
    <width>800</width>
    <height>600</height>
   </rect>
  </property>
  <property name="windowTitle">
   <string>MainWindow</string>
  </property>
  <widget class="QWidget" name="centralwidget">
   <layout class="QVBoxLayout" name="verticalLayout">
    <item>
     <layout class="QHBoxLayout" name="horizontalLayout_2">
      <item>
       <widget class="QLineEdit" name="lineEdit"/>
      </item>
      <item>
       <widget class="QPushButton" name="pushButton_2">
        <property name="text">
         <string>PushButton</string>
        </property>
       </widget>
      </item>
      <item>
       <widget class="QPushButton" name="pushButton">
        <property name="text">
         <string>PushButton</string>
        </property>
       </widget>
      </item>
     </layout>
    </item>
    <item>
     <widget class="QGroupBox" name="groupBox">
      <property name="title">
       <string>It's a plot</string>
      </property>
      <layout class="QHBoxLayout" name="horizontalLayout">
       <item>
        <widget class="PlotWidget" name="plotWidget"/>
       </item>
      </layout>
     </widget>
    </item>
   </layout>
  </widget>
  <widget class="QMenuBar" name="menubar">
   <property name="geometry">
    <rect>
     <x>0</x>
     <y>0</y>
     <width>800</width>
     <height>19</height>
    </rect>
   </property>
  </widget>
  <widget class="QStatusBar" name="statusbar"/>
 </widget>
 <customwidgets>
  <customwidget>
   <class>PlotWidget</class>
   <extends>QGraphicsView</extends>
   <header>pyqtgraph</header>
  </customwidget>
 </customwidgets>
 <resources/>
 <connections/>
</ui>

Good luck!

Patrick

On Friday, 21 December 2018 09:17:23 UTC+10:30, Christian Chacha wrote:
>
> Hi everyone. I'm new in PyQt and pyqtgraph.
>
> I'm trying to embed my pyqtgraph animation inside a GUI application made 
> with Qt Designer.
>
> *I have this code for the animation:*
>
> import pyqtgraph as pg
> from pyqtgraph.Qt import QtCore, QtGui
> import numpy as np
>
> win = pg.GraphicsWindow()
> win.setWindowTitle('pyqtgraph example: Scrolling Plots')
> # 1) Simplest approach -- update data in the array such that plot appears 
> to scroll
> #    In these examples, the array size is fixed.
> p1 = win.addPlot()
> #data1 = np.random.normal(size=300)
> #y = np.cos(2*np.pi*10*t)
> y = np.random.normal(size=300)
> curve1 = p1.plot(y)
> ptr1 = 0
>
>
> def update1():
>     global y, curve1, ptr1
>     y[:-1] = y[1:]  # shift data in the array one sample left
>                             # (see also: np.roll)
>     
>     y[-1] = np.random.normal() # continua grafiacando a partir del ultimo 
> punto graficado
>     curve1.setData(y)   
>     
>     ptr1 += 1
>
>
> #update plot
> def update():
>     update1()
>
>
> timer = pg.QtCore.QTimer()
> timer.timeout.connect(update)
> timer.start(40)
>
>
>
> ## Start Qt event loop unless running in interactive mode or using pyside.
> if __name__ == '__main__':
>     import sys
>     if (sys.flags.interactive != 1) or not hasattr(QtCore, 'PYQT_VERSION'):
>         QtGui.QApplication.instance().exec_()
>
> *And I want to embed the pyqtgraph plot  in this code:*
>
> # -*- coding: utf-8 -*-
>
> # Form implementation generated from reading ui file 'trainingEcg.ui'
> #
> # Created by: PyQt5 UI code generator 5.9.2
> #
> # WARNING! All changes made in this file will be lost!
>
> from PyQt5 import QtCore, QtGui, QtWidgets
>
> class Ui_MainWindow(object):
>     def setupUi(self, MainWindow):
>         MainWindow.setObjectName("MainWindow")
>         MainWindow.resize(700, 600)
>         self.centralwidget = QtWidgets.QWidget(MainWindow)
>         self.centralwidget.setObjectName("centralwidget")
>         self.label_2 = QtWidgets.QLabel(self.centralwidget)
>         self.label_2.setGeometry(QtCore.QRect(280, 40, 31, 31))
>         self.label_2.setObjectName("label_2")
>         self.BotonSimular = QtWidgets.QPushButton(self.centralwidget)
>         self.BotonSimular.setGeometry(QtCore.QRect(360, 30, 131, 41))
>         font = QtGui.QFont()
>         font.setBold(True)
>         font.setWeight(75)
>         self.BotonSimular.setFont(font)
>         self.BotonSimular.setStyleSheet("background-color: rgb(85, 255, 
> 0);")
>         self.BotonSimular.setObjectName("BotonSimular")
>         self.label_3 = QtWidgets.QLabel(self.centralwidget)
>         self.label_3.setGeometry(QtCore.QRect(190, 100, 321, 41))
>         self.label_3.setObjectName("label_3")
>         self.BotonReset = QtWidgets.QPushButton(self.centralwidget)
>         self.BotonReset.setGeometry(QtCore.QRect(530, 30, 131, 41))
>         font = QtGui.QFont()
>         font.setBold(True)
>         font.setWeight(75)
>         self.BotonReset.setFont(font)
>         self.BotonReset.setStyleSheet("background-color: rgb(255, 0, 0);")
>         self.BotonReset.setObjectName("BotonReset")
>         self.label = QtWidgets.QLabel(self.centralwidget)
>         self.label.setGeometry(QtCore.QRect(20, 30, 141, 41))
>         self.label.setObjectName("label")
>         self.InBMP = QtWidgets.QLineEdit(self.centralwidget)
>         self.InBMP.setGeometry(QtCore.QRect(180, 40, 71, 31))
>         self.InBMP.setStyleSheet("background-color: rgb(255, 255, 255);")
>         self.InBMP.setObjectName("InBMP")
>         self.Plot = PlotWidget(self.centralwidget)
>         self.Plot.setGeometry(QtCore.QRect(40, 200, 611, 281))
>         self.Plot.setFrameShape(QtWidgets.QFrame.StyledPanel)
>         self.Plot.setFrameShadow(QtWidgets.QFrame.Raised)
>         self.Plot.setObjectName("Plot")
>         MainWindow.setCentralWidget(self.centralwidget)
>         self.statusbar = QtWidgets.QStatusBar(MainWindow)
>         self.statusbar.setObjectName("statusbar")
>         MainWindow.setStatusBar(self.statusbar)
>
>         self.retranslateUi(MainWindow)
>         QtCore.QMetaObject.connectSlotsByName(MainWindow)
>
>     def retranslateUi(self, MainWindow):
>         _translate = QtCore.QCoreApplication.translate
>         MainWindow.setWindowTitle(_translate("MainWindow", "ecgTrain"))
>         self.label_2.setText(_translate("MainWindow", 
> "<html><head/><body><p><span style=\" font-size:10pt; 
> font-weight:600;\">BMP</span></p></body></html>"))
>         self.BotonSimular.setText(_translate("MainWindow", "SIMULAR"))
>         self.label_3.setText(_translate("MainWindow", 
> "<html><head/><body><p align=\"center\"><span style=\" font-size:12pt; 
> font-weight:600;\">ELECTROCARDIOGRAMA</span></p></body></html>"))
>         self.BotonReset.setText(_translate("MainWindow", "RESET"))
>         self.label.setText(_translate("MainWindow", 
> "<html><head/><body><p><span style=\" font-size:10pt; 
> font-weight:600;\">Frecuencia Cardiaca</span></p></body></html>"))
>
> from pyqtgraph import PlotWidget
>
> if __name__ == "__main__":
>     import sys
>     app = QtWidgets.QApplication(sys.argv)
>     MainWindow = QtWidgets.QMainWindow()
>     ui = Ui_MainWindow()
>     ui.setupUi(MainWindow)
>     MainWindow.show()
>     sys.exit(app.exec_())
>
> If someone has an idea
> Thanks
>

-- 
You received this message because you are subscribed to the Google Groups 
"pyqtgraph" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/pyqtgraph/9cbf88b1-057a-47ea-9f3c-d9c42aa40069%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to