Python - Conexion entre clases en PyQt falla

 
Vista:
sin imagen de perfil

Conexion entre clases en PyQt falla

Publicado por Pablo (5 intervenciones) el 02/12/2015 03:03:16
Buenas a todos. Estoy desarrollando una aplicación utilizando PyQt4, y me encontré con un problema al intentar que dos clases se relacionen entre sí para realizar una determinada acción.

Este es una parte del código:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
Ventana(QMainWindow):
	def __init__(self):
		super(QMainWindow, self).__init__()
		uic.loadUi("MainVentanaNew.ui", self)
                self.frameposition()
		self.addChannel()
 
        def frameposition(self):
		#Posiciono la pestaña principal
		self.setCentralWidget(self.tabWidget)
 
		self.tabWidget.addTab(self.tab, "NombredelArchivo_1")
 
		self.frame.setFrameShape(QFrame.StyledPanel)
		self.frame_3.setFrameShape(QFrame.StyledPanel)
 
                self.splitter1 = QSplitter(Qt.Vertical)
		self.splitter1.setMinimumSize(1100, 250)
 
		self.splitter2 = QSplitter(Qt.Horizontal)
		self.splitter2.addWidget(self.frame)
		self.splitter2.addWidget(self.splitter1)
 
		self.splitter3 = QSplitter(Qt.Vertical)
		self.splitter3.addWidget(self.splitter2) #Agregamos los frames anteriores dentro del frame inferior
		self.splitter3.addWidget(self.frame_3)
 
		tab_layout = QHBoxLayout(self.tabWidget)
		tab_layout.addWidget(self.splitter3)
		self.tab.setLayout(tab_layout)

Entonces, al apretar un boton en una barra de herramientas que cree, se conecta con este método:

1
2
3
4
5
6
7
8
9
10
11
12
def addChannel(self):
		global channelCount
 
		self.scrollLayout = QFormLayout()
 
		self.canal = QwtPlot()
		self.canal.setLayout(self.scrollLayout)
 
		if channelCount <= 4:                                #Sólo agregaremos hasta 5 canales
			self.splitter1.addWidget(self.canal)
			channelCount += 1
			print str(channelCount)

Hasta ahí todo bien, pero luego, al crear otra clase para una ventana QDialog(), creada usando PyQt Designer, intento relacionarla con la clase "Ventana" anterior de tal manera que al presionar un botón en esta ventana de diálogo, se conecte con el método addChannel y haga lo que deseo. La otra clase es la siguiente:

1
2
3
4
5
6
7
8
9
10
11
12
class QwtPlotList(QDialog):
	def __init__(self):
		QDialog.__init__(self)
		uic.loadUi("PropiedadesCanal.ui", self)
		self.botonAdd.clicked.connect(self.addChannel_2)
		self.listWidget.addItem("Canal : 1")
 
        def addChannel_2(self):
		global channelCount
		self.botonAdd.clicked.connect(Ventana().addChannel)
		if channelCount <= 4:
			self.listWidget.addItem("Canal : " + str(channelCount))

Entonces, lo que debería pasar es que al hacer click en el boton "botonAdd", este llame al método "addChannel_2" el cual llama al método de la otra clase "addChannel" y asi, se agrega un widget mas en la ventana principal, y en la ventana de diálogo se agregue a la lista " Canal 2" por ejemplo.

No se si me explique bien, cualquier cosa puedo hacerlo con imágenes tal vez.

Desde ya les agradezco por su tiempo para leer mi consulta, y para responderla si es posible. Estoy con este problema desde hace un tiempo.

Muchas gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil

Conexion entre clases en PyQt falla

Publicado por moises (5 intervenciones) el 03/12/2015 01:34:05
Que error te da?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Conexion entre clases en PyQt falla

Publicado por Pablo (5 intervenciones) el 03/12/2015 03:55:52
Hola, con estas dos imágenes quizas se explique mejor el problema:

En la primera imagen vemos el QWidget, el cual es una grafica de QwtPlot, y la ventana en donde al presionar el boton "Añadir, se crea un Item en la lista, pero no asi el QWidget

fb5GnQe

Y en esta segunda imagen, al presionar un boton de la barra de herramientas, me crea el QWidget pero no me introduce ningun item en la lista.

dTnXNGS

Mediante la linea:

1
self.botonAdd.clicked.connect(Ventana().addChannel)

creí que habia "vinculado" ambos métodos, pero al parecer no. Lo único que sucede, es que la linea:

1
if channelCount <= 4:


si se cumple, es decir, no puedo poner mas de 4 items o widgets mas.

Muchas gracias por tomarse el tiempo de leer la consulta. Ojala puedan ayudarme.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Conexion entre clases en PyQt falla

Publicado por Silva Tobias (1 intervención) el 19/12/2019 20:55:51
Hola Pablo, pudiste solucionarlo?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar