
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:
Entonces, al apretar un boton en una barra de herramientas que cree, se conecta con este método:
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:
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.
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


0