26/03/2011, 11:27
|
| | Fecha de Ingreso: marzo-2011
Mensajes: 1
Antigüedad: 13 años, 9 meses Puntos: 0 | |
Respuesta: Evento PyQt4 Estoy empezando con PyQt, y relacionado con el tema de este post, como puedo hacer para cerrar varias ventanas simultáneamente?
Acá tengo este codigo de un programa que estoy empezando y usa 2 clases que muestro pero quiero hacer que si se cierra una la otra también.
Código:
#!/usr/bin/python
# -*- coding: utf-8 -*-
# points.py
import sys, random
import math,time
from PyQt4 import QtGui, QtCore
Lx=400
Ly=400
xn=-3
xm=3
yn=xn #Escala cuadrada
ym=xm
#Se espera que con solo asegurar un fl todo se opere como flotante
EscalaX=(float(xm)-xn)/Lx
EscalaY=(float(ym)-yn)/Ly
Soluciones=[]
def Circulo (x0,y0,r):
#Definir la paremetrizacion
#Aprox cuantos px se ocupan para dibujar la circunferencia.
n=(2*math.pi*r)/EscalaX
#Aumentando el numero un 5%
n=1.05*n
#Se requiere un numero entero de pixeles
n=int(n)
#El circulo se parametriza facilmente usando polares
#Se divide 2pi entre el numero de pasos que se requieren
paso=(2*math.pi)/n
#Se inicializa el parametro, contador y arreglo de soluciones
t=0
cont=0
S=[]
#Generar las soluciones para el circulo parametrizado
while cont<n:
S.append([float(r*math.cos(t)+x0),float(r*math.sin(t)+y0)])
t=t+paso
cont=cont+1
if S!=[]:
return S
#Prueba de la matriz soluciones y de la funcion circulo
Soluciones=Soluciones+Circulo(1,1,2)
Soluciones=Soluciones+Circulo(0,0,1)
Soluciones=Soluciones+Circulo(0,0,0.5)
Soluciones=Soluciones+Circulo(0,0,1.5)
Soluciones=Soluciones+Circulo(0,0,2)
print (Soluciones)
#Generar la matriz de pixeles
L=len(Soluciones)
Pix=[]
i=0
while i<L:
Pix.append([int((Soluciones[i][0]-xn)/EscalaX),Ly-int((Soluciones[i][1]-yn)/EscalaY)])
i=i+1
#Generar la matriz de soluciones mapeadas
L=len(Soluciones)
SolMap=[]
i=0
while i<L:
#SolMap.append([(1.0/(math.sqrt(Soluciones[i][0]*Soluciones[i][0]+Soluciones[i][1]*Soluciones[i][1])))*math.cos(-math.atan(float(Soluciones[i][1])/Soluciones[i][0])),(1.0/(math.sqrt(Soluciones[i][0]*Soluciones[i][0]+Soluciones[i][1]*Soluciones[i][1])))*math.sin(-math.atan(Soluciones[i][1]/Soluciones[i][0]))])
SolMap.append([Soluciones[i][0],Soluciones[i][1]])
i=i+1
#Generar la matriz de pixeles mapeados
L=len(SolMap)
PixMap=[]
i=0
while i<L:
PixMap.append([int((SolMap[i][0]-xn)/EscalaX),Ly-int((SolMap[i][1]-yn)/EscalaY)])
i=i+1
#Clase para el interfaz grafico usando PyQt4
class Grafica(QtGui.QWidget):
def __init__(self):
super(Grafica, self).__init__()
self.setGeometry(150, 100, Lx, Ly)
self.setWindowTitle('Grafica a Mapear')
self.setStyleSheet("QWidget {background-color: #FFFFFF}")
def paintEvent(self, e):
qp = QtGui.QPainter()
qp.begin(self)
self.drawPoints(qp)
qp.end()
def drawPoints(self, qp):
size = self.size()
#Dibujar los ejes
qp.setPen(QtGui.QColor(0, 0, 0))
x=float(xn)
while x<xm:
qp.drawPoint(int((x-xn)/EscalaX),int((0-yn)/EscalaY))
x=x+EscalaX
y=float(yn)
while y<ym:
qp.drawPoint(int((0-xn)/EscalaX),int((y-yn)/EscalaY))
y=y+EscalaY
#Dibujar la matriz de soluciones
qp.setPen(QtCore.Qt.red)
L=len(Pix)
i=0
while i<L:
#Se dibujan los pixeles de la matriz de soluciones
qp.drawPoint(Pix[i][0],Pix[i][1])
i=i+1
class Mapeo(QtGui.QWidget):
def __init__(self):
super(Mapeo, self).__init__()
self.setGeometry(650, 100, Lx, Ly)
self.setWindowTitle('Mapeo de la grafica')
self.setStyleSheet("QWidget {background-color: #FFFFFF}")
def paintEvent(self, e):
qp = QtGui.QPainter()
qp.begin(self)
self.drawPoints(qp)
qp.end()
def drawPoints(self, qp):
size = self.size()
#Dibujar los ejes
qp.setPen(QtGui.QColor(0, 0, 0))
x=float(xn)
while x<xm:
qp.drawPoint(int((x-xn)/EscalaX),int((0-yn)/EscalaY))
x=x+EscalaX
y=float(yn)
while y<ym:
qp.drawPoint(int((0-xn)/EscalaX),int((y-yn)/EscalaY))
y=y+EscalaY
#Dibujar la matriz mapeada
L=len(PixMap)
i=0
qp.setPen(QtGui.QColor(0, 255, 50))
while i<L:
#Dibujando los pixeles
qp.drawPoint(PixMap[i][0],PixMap[i][1])
i=i+1
print SolMap
print (len(Soluciones))
print (len(SolMap))
print (len(PixMap))
app = QtGui.QApplication(sys.argv)
graf = Grafica()
graf.show()
mapeo = Mapeo()
mapeo.show()
sys.exit(app.exec_())
|