def __init__(self, parent = None, dominio=None):#Hay que pasarle la ventana que lo invoca QMainWindow.__init__(self, parent) ti=0.0 ## tf=3.0 tf=0.3 ## ##justito para que quede 0.1 el dt ## nit=int(tf/0.1) ## nit=100 nit=100 ##el mismo ancho y alto para que quede cada 1 unidad #### nix=dominio.ancho nix=40 ## niy=dominio.alto niy=40 ##discretizacion temporal dt=(tf-ti)/nit nit=nit+1 tiempos=np.zeros((nit),float) tiempos[0]=ti ##se suma 1 para que sea haga bien la division es un intervalo mas 0..100 (101) nix=nix+1 niy=niy+1 #discretizacion temporal for i in range(1,nit): tiempos[i]=tiempos[i-1]+dt ##discretizacion espacial xx = np.linspace(0,dominio.ancho,nix) ; yy = np.linspace(dominio.alto,0,niy) ; ##Se generan las matrices para usar en todas las graficas X, Y = np.meshgrid(xx, yy) ## print 'Matrices X, Y' ## print X ## print Y ## print '\n' self.ti=ti self.tf=tf self.dt=dt self.nix=nix self.niy=niy self.cardt=0 ##Llamado a procesar la barrera.. para generar los pozos virtuales porque se duplican por precensia de la barrera dominio.procesarBarrera() ##LLAMADO AL METODO DE SOLUCION ##llamamo al metodo de solucion asociado al dominio para que me de la matriz ### se envian ademas todas las discretizaciones matrix=dominio.metodo.calcular(tiempos,xx,yy) matx = dominio.metodo.gradienteX() maty = dominio.metodo.gradienteY() ##se obtiene un pozo de observacion el primero por defecto pozoObservacion=dominio.obtenerPozoObservacion() ##Obtener una observacion de ensayo ...que pasa cuando hay mas de una asociada????? observaciones=pozoObservacion.observaciones[0].devolverO() self.observaciones = observaciones pozoBombeo=dominio.obtenerPozoBombeo() ##Obtener el ensayo de bombeo, los caudales y tiempos(al menos hay uno) ...que pasa cuando hay mas de un ensayo asociado????? bombeos=pozoBombeo.ensayos[0].devolverB() self.bombeos=bombeos self.setAttribute(QtCore.Qt.WA_DeleteOnClose) #### Codigo nuevo introducido para prueba #fig2 = Figure(figsize = (1.5, 2.5)) fig2 = Figure(figsize = (1.8 * 4, 2.4 * 4)) axu2 = fig2.add_subplot(2, 2, 1) axd2 = fig2.add_subplot(2, 2, 2) axt2 = fig2.add_subplot(2, 2, 3, projection = '3d') axc2 = fig2.add_subplot(2, 2, 4) fig2.subplots_adjust(hspace=.2, wspace=.3, bottom=.07, left=.08, right=.92, top=.94) #axt = Axes3D(fig2) ## superficies=np.zeros((len(tiempos)),Poly3DCollection) superficies=[] for i in range(0,nit): Z = matrix[i] axt2.cla() ## print 'Matriz generada ' ## print 't: '+str(i) ## print 'Z: \n' + str(Z) surf = axt2.plot_surface(X, Y, Z, rstride=1, cstride=1, cmap=cm.jet,linewidth=0, antialiased=False) superficies.append(surf) ## canvas = FigureCanvas(fig2) ## canvas.draw() #### fIN Codigo nuevo introducido para prueba ran=0 self.fm = fm(matrix, matx, maty, dominio, observaciones, bombeos,X,Y, xx, yy, tiempos, superficies) ## ran = random.randint(1, 10) self.fm.plotU(ran) ##1ero plotT dps plotD self.fm.plotT(ran, 0) ## self.fm.plotD(ran, 0) ## self.fm.plotC(ran, 0) self.main_frame = QWidget() self.setWindowTitle(u'Gráficas') self.setMaximumSize(self.fm.fig.get_figwidth() * self.fm.fig.get_dpi(), self.fm.fig.get_figheight() * self.fm.fig.get_dpi() + 43) self.setMinimumSize(self.fm.fig.get_figwidth() * self.fm.fig.get_dpi(), self.fm.fig.get_figheight() * self.fm.fig.get_dpi() + 43) ## print 'Figure: width: ' + str(self.fm.fig.get_figwidth() * self.fm.fig.get_dpi()) + ', height: ' +str(self.fm.fig.get_figheight() * self.fm.fig.get_dpi()) + ', dpi: ' + str(self.fm.fig.get_dpi()) self.center() self.canvas = FigureCanvas(self.fm.fig) self.canvas.setParent(self.main_frame) #self.mpl_toolbar = NavigationToolbar(self.canvas, self.main_frame) self.canvas.draw() self.vel = [1, 2, 3, 4, 5, 6] self.velActual = 0 self.inter = 1 separador = QFrame() separador.setFrameShadow(QFrame.Sunken) separador.setFrameShape(QFrame.HLine) separador.setLineWidth(576) reproducirb = QPushButton() reproducirb.setMinimumSize(32, 32) reproducirb.setMaximumSize(32, 32) reproducirb.setIcon(QIcon('content/images/reproducir.png')) self.reproducirb = reproducirb QtCore.QObject.connect(self.reproducirb, QtCore.SIGNAL(_fromUtf8('released()')), self.reproducir) reversab = QPushButton() reversab.setMinimumSize(32, 32) reversab.setMaximumSize(32, 32) reversab.setIcon(QIcon('content/images/reproducir.png')) self.reversab = reversab QtCore.QObject.connect(self.reversab, QtCore.SIGNAL(_fromUtf8('released()')), self.reversa) velocidadb = QPushButton() velocidadb.setMinimumSize(32, 32) velocidadb.setMaximumSize(32, 32) velocidadb.setText(QString(str(self.velActual + 1) + 'x')) self.velocidadb = velocidadb QtCore.QObject.connect(self.velocidadb, QtCore.SIGNAL(_fromUtf8('released()')), self.velocidad) guardarb = QPushButton() guardarb.setMinimumSize(32, 32) guardarb.setMaximumSize(32, 32) guardarb.setIcon(QIcon('content/images/guardar.png')) self.guardarb = guardarb QtCore.QObject.connect(self.guardarb, QtCore.SIGNAL(_fromUtf8('released()')), self.guardar) estadob = QSlider(Qt.Horizontal) estadob.setMinimumSize(324, 32) estadob.setToolTip(u'Próximamente: mostrará el avance de la animación.') ##cambie el tmp ####se grafica lo que hay en el primer tiempo #tmp = self.fm.matrix[0] #Habia un tmp -1 #estadob.setMaximum(tmp[-1]) #estadob.setMaximum(20) ##El maximo tiempo va a ser lo que hay en el ultimo tiempo de bombeo ##estadob.setMaximum(self.bombeos[-1].tiempo*10) #Cambio por la discretizacion espacial estadob.setMaximum(int(tf/dt)) estadob.setMinimum(0) self.estadob = estadob QtCore.QObject.connect(self.estadob, QtCore.SIGNAL(_fromUtf8('sliderReleased()')), self.actualizarSlider) QtCore.QObject.connect(self.estadob, QtCore.SIGNAL(_fromUtf8('sliderMoved()')), self.actualizarSlider) QtCore.QObject.connect(self.estadob, QtCore.SIGNAL(_fromUtf8('valueChanged(int)')), self.actualizarSlider) #timlab = QLabel(QString('0/' + str(self.bombeos[-1].tiempo))) #el tiempo final elejido por el usuario timlab = QLabel(QString('0/' + str(tf))) #timlab=QLabel(QString('pepe')) self.timlab = timlab vbox = QVBoxLayout() vbox.addWidget(self.canvas) vbox.addWidget(separador) hbox = QHBoxLayout() hbox.addWidget(reproducirb) hbox.addWidget(reversab) hbox.addWidget(velocidadb) hbox.addWidget(guardarb) hbox.addWidget(estadob) hbox.addWidget(timlab) vbox.addLayout(hbox) self.main_frame.setLayout(vbox) self.setCentralWidget(self.main_frame) self.timer = QTimer(self) ##Cada un segundo, dps aca cambiar la velocidad de reproduccion self.timer.setInterval(1000 * self.vel[self.velActual]) QtCore.QObject.connect(self.timer, QtCore.SIGNAL("timeout()"), self.reproducirBucle)
def __init__( self, parent=None, dominio=None, tipodis=None, X=None, Y=None, xx=None, yy=None, nix=None, niy=None, tiempos=None, tiemposobs=None, ti=None, tf=None, dt=None, dia=None, ): QMainWindow.__init__(self, parent) self.dia = dia self.ti = ti self.tf = tf self.dt = dt # self.nix=nix # self.niy=niy # self.tfo=tfo self.cardt = 0 self.tiempos = tiempos ## print 'ti ',ti ##LLAMADO AL METODO DE SOLUCION ##llamamo al metodo de solucion asociado al dominio para que me de la matriz ### se envian ademas todas las discretizaciones print u"Empieaza..." matrix = dominio.metodo.calcular(tiempos, ti, tf, dt, nix, niy, xx, yy, X, Y) matx = dominio.metodo.gradienteX() maty = dominio.metodo.gradienteY() ming = dominio.metodo.minimoMatriz() maxg = dominio.metodo.maximoMatriz() print u"Termina" # pozoBombeo=dominio.obtenerPozoBombeo() ##Obtener el ensayo de bombeo, los caudales y tiempos(al menos hay uno) ...que pasa cuando hay mas de un ensayo asociado????? # bombeos=pozoBombeo.ensayos[0].devolverB() # self.bombeos=bombeos self.setAttribute(QtCore.Qt.WA_DeleteOnClose) #### Codigo nuevo introducido para prueba # fig2 = Figure(figsize = (1.5, 2.5)) # fig2 = Figure(figsize = (1.8 * 4, 2.4 * 4)) # axu2 = fig2.add_subplot(2, 2, 1) # axd2 = fig2.add_subplot(2, 2, 2) # axt2 = fig2.add_subplot(2, 2, 3, projection = '3d') # axc2 = fig2.add_subplot(2, 2, 4) # fig2.subplots_adjust(hspace=.2, wspace=.3, bottom=.07, left=.08, right=.92, top=.94) # axt = Axes3D(fig2) ## superficies=np.zeros((len(tiempos)),Poly3DCollection) superficies = [] # for i in range(0,nit): # Z = matrix[i] # axt2.cla() ## print 'Matriz generada ' ## print 't: '+str(i) ## print 'Z: \n' + str(Z) # surf = axt2.plot_surface(X, Y, Z, rstride=1, cstride=1, cmap=cm.jet,linewidth=0, antialiased=False) # superficies.append(surf) ## canvas = FigureCanvas(fig2) ## canvas.draw() #### fIN Codigo nuevo introducido para prueba self.fm = fm(matrix, matx, maty, dominio, tipodis, X, Y, tiempos, tiemposobs, superficies, ming, maxg) self.sel = 0 self.grafSel(0) self.main_frame = QWidget() self.setWindowTitle(u"Gráficas") self.setMinimumSize(276, 568) self.center() self.canvas = FigureCanvas(self.fm.fig) self.canvas.setParent(self.main_frame) self.canvas.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding) self.canvas.draw() self.vel = [1, 2, 3] self.velActual = 0 self.inter = 1 separador = QFrame() separador.setFrameShadow(QFrame.Sunken) separador.setFrameShape(QFrame.HLine) separador.setLineWidth(576) selectc = QComboBox() selectc.addItem(QIcon(u"content/images/plot.png"), QString(u"Lineal"), 0) selectc.addItem(QIcon(u"content/images/contour.png"), QString(u"Propagación"), 1) selectc.addItem(QIcon(u"content/images/contour.png"), QString(u"3D"), 2) selectc.addItem(QIcon(u"content/images/quiver.png"), QString(u"Velocidad"), 3) self.selectc = selectc QtCore.QObject.connect(self.selectc, QtCore.SIGNAL(_fromUtf8("currentIndexChanged (int)")), self.grafSele) reproducirb = QPushButton() reproducirb.setMinimumSize(32, 32) reproducirb.setMaximumSize(32, 32) reproducirb.setIcon(QIcon("content/images/reproducir.png")) self.reproducirb = reproducirb QtCore.QObject.connect(self.reproducirb, QtCore.SIGNAL(_fromUtf8("released()")), self.reproducir) reversab = QPushButton() reversab.setMinimumSize(32, 32) reversab.setMaximumSize(32, 32) reversab.setIcon(QIcon("content/images/normal.png")) self.reversab = reversab QtCore.QObject.connect(self.reversab, QtCore.SIGNAL(_fromUtf8("released()")), self.reversa) velocidadb = QPushButton() velocidadb.setMinimumSize(32, 32) velocidadb.setMaximumSize(32, 32) velocidadb.setText(QString(str(self.velActual + 1) + "x")) self.velocidadb = velocidadb QtCore.QObject.connect(self.velocidadb, QtCore.SIGNAL(_fromUtf8("released()")), self.velocidad) guardarb = QPushButton() guardarb.setMinimumSize(32, 32) guardarb.setMaximumSize(32, 32) guardarb.setIcon(QIcon("content/images/guardar.png")) self.guardarb = guardarb QtCore.QObject.connect(self.guardarb, QtCore.SIGNAL(_fromUtf8("released()")), self.guardar) estadob = QSlider(Qt.Horizontal) estadob.setMinimumSize(324, 32) estadob.setToolTip(u"Próximamente: mostrará el avance de la animación.") # Cambio por la discretizacion espacial ## print "tf ",tf,"dt ",dt, "maximo ",tf/dt if dominio.metodo.gettipo() != "analitico": estadob.setMaximum(int(tf / dt) - 1) else: estadob.setMaximum(int(tf / dt)) estadob.setMinimum(ti) self.estadob = estadob QtCore.QObject.connect(self.estadob, QtCore.SIGNAL(_fromUtf8("sliderReleased()")), self.actualizarSlider) QtCore.QObject.connect(self.estadob, QtCore.SIGNAL(_fromUtf8("sliderMoved()")), self.actualizarSlider) QtCore.QObject.connect(self.estadob, QtCore.SIGNAL(_fromUtf8("valueChanged(int)")), self.actualizarSlider) # el tiempo final elejido por el usuario timlab = QLabel(QString(str(ti) + "/" + str(self.tiempos[-1]))) self.timlab = timlab vbox = QVBoxLayout() vbox.addWidget(self.canvas) vbox.addWidget(separador) hbox = QHBoxLayout() hbox.addWidget(selectc) hbox.addWidget(reproducirb) hbox.addWidget(reversab) hbox.addWidget(velocidadb) hbox.addWidget(guardarb) hbox.addWidget(estadob) hbox.addWidget(timlab) vbox.addLayout(hbox) self.main_frame.setLayout(vbox) self.setCentralWidget(self.main_frame) self.timer = QTimer(self) ##Cada un segundo, dps aca cambiar la velocidad de reproduccion self.timer.setInterval(1000 * self.vel[self.velActual]) QtCore.QObject.connect(self.timer, QtCore.SIGNAL("timeout()"), self.reproducirBucle) # if self.dia!=None: self.dia.close() self.dia = None
def __init__(self, parent=None, dominio=None, tipodis=None, X=None, Y=None, xx=None, yy=None, nix=None, niy=None, tiempos=None, tiemposobs=None, ti=None, tf=None, dt=None, dia=None): QMainWindow.__init__(self, parent) self.dia = dia self.ti = ti self.tf = tf self.dt = dt #self.nix=nix #self.niy=niy #self.tfo=tfo self.cardt = 0 self.tiempos = tiempos ## print 'ti ',ti ##LLAMADO AL METODO DE SOLUCION ##llamamo al metodo de solucion asociado al dominio para que me de la matriz ### se envian ademas todas las discretizaciones print u'Empieaza...' matrix = dominio.metodo.calcular(tiempos, ti, tf, dt, nix, niy, xx, yy, X, Y) matx = dominio.metodo.gradienteX() maty = dominio.metodo.gradienteY() ming = dominio.metodo.minimoMatriz() maxg = dominio.metodo.maximoMatriz() print u'Termina' #pozoBombeo=dominio.obtenerPozoBombeo() ##Obtener el ensayo de bombeo, los caudales y tiempos(al menos hay uno) ...que pasa cuando hay mas de un ensayo asociado????? #bombeos=pozoBombeo.ensayos[0].devolverB() #self.bombeos=bombeos self.setAttribute(QtCore.Qt.WA_DeleteOnClose) #### Codigo nuevo introducido para prueba #fig2 = Figure(figsize = (1.5, 2.5)) #fig2 = Figure(figsize = (1.8 * 4, 2.4 * 4)) #axu2 = fig2.add_subplot(2, 2, 1) #axd2 = fig2.add_subplot(2, 2, 2) #axt2 = fig2.add_subplot(2, 2, 3, projection = '3d') #axc2 = fig2.add_subplot(2, 2, 4) #fig2.subplots_adjust(hspace=.2, wspace=.3, bottom=.07, left=.08, right=.92, top=.94) #axt = Axes3D(fig2) ## superficies=np.zeros((len(tiempos)),Poly3DCollection) superficies = [] #for i in range(0,nit): # Z = matrix[i] # axt2.cla() ## print 'Matriz generada ' ## print 't: '+str(i) ## print 'Z: \n' + str(Z) # surf = axt2.plot_surface(X, Y, Z, rstride=1, cstride=1, cmap=cm.jet,linewidth=0, antialiased=False) # superficies.append(surf) ## canvas = FigureCanvas(fig2) ## canvas.draw() #### fIN Codigo nuevo introducido para prueba self.fm = fm(matrix, matx, maty, dominio, tipodis, X, Y, tiempos, tiemposobs, superficies, ming, maxg) self.sel = 0 self.grafSel(0) self.main_frame = QWidget() self.setWindowTitle(u'Gráficas') self.setMinimumSize(276, 568) self.center() self.canvas = FigureCanvas(self.fm.fig) self.canvas.setParent(self.main_frame) self.canvas.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding) self.canvas.draw() self.vel = [1, 2, 3] self.velActual = 0 self.inter = 1 separador = QFrame() separador.setFrameShadow(QFrame.Sunken) separador.setFrameShape(QFrame.HLine) separador.setLineWidth(576) selectc = QComboBox() selectc.addItem(QIcon(u'content/images/plot.png'), QString(u'Lineal'), 0) selectc.addItem(QIcon(u'content/images/contour.png'), QString(u'Propagación'), 1) selectc.addItem(QIcon(u'content/images/contour.png'), QString(u'3D'), 2) selectc.addItem(QIcon(u'content/images/quiver.png'), QString(u'Velocidad'), 3) self.selectc = selectc QtCore.QObject.connect( self.selectc, QtCore.SIGNAL(_fromUtf8('currentIndexChanged (int)')), self.grafSele) reproducirb = QPushButton() reproducirb.setMinimumSize(32, 32) reproducirb.setMaximumSize(32, 32) reproducirb.setIcon(QIcon('content/images/reproducir.png')) self.reproducirb = reproducirb QtCore.QObject.connect(self.reproducirb, QtCore.SIGNAL(_fromUtf8('released()')), self.reproducir) reversab = QPushButton() reversab.setMinimumSize(32, 32) reversab.setMaximumSize(32, 32) reversab.setIcon(QIcon('content/images/normal.png')) self.reversab = reversab QtCore.QObject.connect(self.reversab, QtCore.SIGNAL(_fromUtf8('released()')), self.reversa) velocidadb = QPushButton() velocidadb.setMinimumSize(32, 32) velocidadb.setMaximumSize(32, 32) velocidadb.setText(QString(str(self.velActual + 1) + 'x')) self.velocidadb = velocidadb QtCore.QObject.connect(self.velocidadb, QtCore.SIGNAL(_fromUtf8('released()')), self.velocidad) guardarb = QPushButton() guardarb.setMinimumSize(32, 32) guardarb.setMaximumSize(32, 32) guardarb.setIcon(QIcon('content/images/guardar.png')) self.guardarb = guardarb QtCore.QObject.connect(self.guardarb, QtCore.SIGNAL(_fromUtf8('released()')), self.guardar) estadob = QSlider(Qt.Horizontal) estadob.setMinimumSize(324, 32) estadob.setToolTip( u'Próximamente: mostrará el avance de la animación.') #Cambio por la discretizacion espacial ## print "tf ",tf,"dt ",dt, "maximo ",tf/dt if dominio.metodo.gettipo() != "analitico": estadob.setMaximum(int(tf / dt) - 1) else: estadob.setMaximum(int(tf / dt)) estadob.setMinimum(ti) self.estadob = estadob QtCore.QObject.connect(self.estadob, QtCore.SIGNAL(_fromUtf8('sliderReleased()')), self.actualizarSlider) QtCore.QObject.connect(self.estadob, QtCore.SIGNAL(_fromUtf8('sliderMoved()')), self.actualizarSlider) QtCore.QObject.connect(self.estadob, QtCore.SIGNAL(_fromUtf8('valueChanged(int)')), self.actualizarSlider) #el tiempo final elejido por el usuario timlab = QLabel(QString(str(ti) + '/' + str(self.tiempos[-1]))) self.timlab = timlab vbox = QVBoxLayout() vbox.addWidget(self.canvas) vbox.addWidget(separador) hbox = QHBoxLayout() hbox.addWidget(selectc) hbox.addWidget(reproducirb) hbox.addWidget(reversab) hbox.addWidget(velocidadb) hbox.addWidget(guardarb) hbox.addWidget(estadob) hbox.addWidget(timlab) vbox.addLayout(hbox) self.main_frame.setLayout(vbox) self.setCentralWidget(self.main_frame) self.timer = QTimer(self) ##Cada un segundo, dps aca cambiar la velocidad de reproduccion self.timer.setInterval(1000 * self.vel[self.velActual]) QtCore.QObject.connect(self.timer, QtCore.SIGNAL("timeout()"), self.reproducirBucle) #if self.dia!=None: self.dia.close() self.dia = None
def __init__(self, parent=None, dominio=None): #Hay que pasarle la ventana que lo invoca QMainWindow.__init__(self, parent) ti = 0.0 ## tf=3.0 tf = 0.3 ## ##justito para que quede 0.1 el dt ## nit=int(tf/0.1) ## nit=100 nit = 100 ##el mismo ancho y alto para que quede cada 1 unidad #### nix=dominio.ancho nix = 40 ## niy=dominio.alto niy = 40 ##discretizacion temporal dt = (tf - ti) / nit nit = nit + 1 tiempos = np.zeros((nit), float) tiempos[0] = ti ##se suma 1 para que sea haga bien la division es un intervalo mas 0..100 (101) nix = nix + 1 niy = niy + 1 #discretizacion temporal for i in range(1, nit): tiempos[i] = tiempos[i - 1] + dt ##discretizacion espacial xx = np.linspace(0, dominio.ancho, nix) yy = np.linspace(dominio.alto, 0, niy) ##Se generan las matrices para usar en todas las graficas X, Y = np.meshgrid(xx, yy) ## print 'Matrices X, Y' ## print X ## print Y ## print '\n' self.ti = ti self.tf = tf self.dt = dt self.nix = nix self.niy = niy self.cardt = 0 ##Llamado a procesar la barrera.. para generar los pozos virtuales porque se duplican por precensia de la barrera dominio.procesarBarrera() ##LLAMADO AL METODO DE SOLUCION ##llamamo al metodo de solucion asociado al dominio para que me de la matriz ### se envian ademas todas las discretizaciones matrix = dominio.metodo.calcular(tiempos, xx, yy) matx = dominio.metodo.gradienteX() maty = dominio.metodo.gradienteY() ##se obtiene un pozo de observacion el primero por defecto pozoObservacion = dominio.obtenerPozoObservacion() ##Obtener una observacion de ensayo ...que pasa cuando hay mas de una asociada????? observaciones = pozoObservacion.observaciones[0].devolverO() self.observaciones = observaciones pozoBombeo = dominio.obtenerPozoBombeo() ##Obtener el ensayo de bombeo, los caudales y tiempos(al menos hay uno) ...que pasa cuando hay mas de un ensayo asociado????? bombeos = pozoBombeo.ensayos[0].devolverB() self.bombeos = bombeos self.setAttribute(QtCore.Qt.WA_DeleteOnClose) #### Codigo nuevo introducido para prueba #fig2 = Figure(figsize = (1.5, 2.5)) fig2 = Figure(figsize=(1.8 * 4, 2.4 * 4)) axu2 = fig2.add_subplot(2, 2, 1) axd2 = fig2.add_subplot(2, 2, 2) axt2 = fig2.add_subplot(2, 2, 3, projection='3d') axc2 = fig2.add_subplot(2, 2, 4) fig2.subplots_adjust(hspace=.2, wspace=.3, bottom=.07, left=.08, right=.92, top=.94) #axt = Axes3D(fig2) ## superficies=np.zeros((len(tiempos)),Poly3DCollection) superficies = [] for i in range(0, nit): Z = matrix[i] axt2.cla() ## print 'Matriz generada ' ## print 't: '+str(i) ## print 'Z: \n' + str(Z) surf = axt2.plot_surface(X, Y, Z, rstride=1, cstride=1, cmap=cm.jet, linewidth=0, antialiased=False) superficies.append(surf) ## canvas = FigureCanvas(fig2) ## canvas.draw() #### fIN Codigo nuevo introducido para prueba ran = 0 self.fm = fm(matrix, matx, maty, dominio, observaciones, bombeos, X, Y, xx, yy, tiempos, superficies) ## ran = random.randint(1, 10) self.fm.plotU(ran) ##1ero plotT dps plotD self.fm.plotT(ran, 0) ## self.fm.plotD(ran, 0) ## self.fm.plotC(ran, 0) self.main_frame = QWidget() self.setWindowTitle(u'Gráficas') self.setMaximumSize( self.fm.fig.get_figwidth() * self.fm.fig.get_dpi(), self.fm.fig.get_figheight() * self.fm.fig.get_dpi() + 43) self.setMinimumSize( self.fm.fig.get_figwidth() * self.fm.fig.get_dpi(), self.fm.fig.get_figheight() * self.fm.fig.get_dpi() + 43) ## print 'Figure: width: ' + str(self.fm.fig.get_figwidth() * self.fm.fig.get_dpi()) + ', height: ' +str(self.fm.fig.get_figheight() * self.fm.fig.get_dpi()) + ', dpi: ' + str(self.fm.fig.get_dpi()) self.center() self.canvas = FigureCanvas(self.fm.fig) self.canvas.setParent(self.main_frame) #self.mpl_toolbar = NavigationToolbar(self.canvas, self.main_frame) self.canvas.draw() self.vel = [1, 2, 3, 4, 5, 6] self.velActual = 0 self.inter = 1 separador = QFrame() separador.setFrameShadow(QFrame.Sunken) separador.setFrameShape(QFrame.HLine) separador.setLineWidth(576) reproducirb = QPushButton() reproducirb.setMinimumSize(32, 32) reproducirb.setMaximumSize(32, 32) reproducirb.setIcon(QIcon('content/images/reproducir.png')) self.reproducirb = reproducirb QtCore.QObject.connect(self.reproducirb, QtCore.SIGNAL(_fromUtf8('released()')), self.reproducir) reversab = QPushButton() reversab.setMinimumSize(32, 32) reversab.setMaximumSize(32, 32) reversab.setIcon(QIcon('content/images/reproducir.png')) self.reversab = reversab QtCore.QObject.connect(self.reversab, QtCore.SIGNAL(_fromUtf8('released()')), self.reversa) velocidadb = QPushButton() velocidadb.setMinimumSize(32, 32) velocidadb.setMaximumSize(32, 32) velocidadb.setText(QString(str(self.velActual + 1) + 'x')) self.velocidadb = velocidadb QtCore.QObject.connect(self.velocidadb, QtCore.SIGNAL(_fromUtf8('released()')), self.velocidad) guardarb = QPushButton() guardarb.setMinimumSize(32, 32) guardarb.setMaximumSize(32, 32) guardarb.setIcon(QIcon('content/images/guardar.png')) self.guardarb = guardarb QtCore.QObject.connect(self.guardarb, QtCore.SIGNAL(_fromUtf8('released()')), self.guardar) estadob = QSlider(Qt.Horizontal) estadob.setMinimumSize(324, 32) estadob.setToolTip( u'Próximamente: mostrará el avance de la animación.') ##cambie el tmp ####se grafica lo que hay en el primer tiempo #tmp = self.fm.matrix[0] #Habia un tmp -1 #estadob.setMaximum(tmp[-1]) #estadob.setMaximum(20) ##El maximo tiempo va a ser lo que hay en el ultimo tiempo de bombeo ##estadob.setMaximum(self.bombeos[-1].tiempo*10) #Cambio por la discretizacion espacial estadob.setMaximum(int(tf / dt)) estadob.setMinimum(0) self.estadob = estadob QtCore.QObject.connect(self.estadob, QtCore.SIGNAL(_fromUtf8('sliderReleased()')), self.actualizarSlider) QtCore.QObject.connect(self.estadob, QtCore.SIGNAL(_fromUtf8('sliderMoved()')), self.actualizarSlider) QtCore.QObject.connect(self.estadob, QtCore.SIGNAL(_fromUtf8('valueChanged(int)')), self.actualizarSlider) #timlab = QLabel(QString('0/' + str(self.bombeos[-1].tiempo))) #el tiempo final elejido por el usuario timlab = QLabel(QString('0/' + str(tf))) #timlab=QLabel(QString('pepe')) self.timlab = timlab vbox = QVBoxLayout() vbox.addWidget(self.canvas) vbox.addWidget(separador) hbox = QHBoxLayout() hbox.addWidget(reproducirb) hbox.addWidget(reversab) hbox.addWidget(velocidadb) hbox.addWidget(guardarb) hbox.addWidget(estadob) hbox.addWidget(timlab) vbox.addLayout(hbox) self.main_frame.setLayout(vbox) self.setCentralWidget(self.main_frame) self.timer = QTimer(self) ##Cada un segundo, dps aca cambiar la velocidad de reproduccion self.timer.setInterval(1000 * self.vel[self.velActual]) QtCore.QObject.connect(self.timer, QtCore.SIGNAL("timeout()"), self.reproducirBucle)