Tengo dos ventanas simples una con un pushbutton y la otra con un widget-label para mostrar un mensaje. Lo que quiero es que al presionar el pushbutton de la ventana de Boton se muestre un mensaje en la otra ventana llamada Meesaje, ¿cómo puedo hacer esto?
Adjunto los códigos de ambas ventanas sin ninguna función. Espero me puedan ayudar:
from PyQt4 import QtCore, QtGui try: _fromUtf8 = QtCore.QString.fromUtf8 except AttributeError: def _fromUtf8(s): return s try: _encoding = QtGui.QApplication.UnicodeUTF8 def _translate(context, text, disambig): return QtGui.QApplication.translate(context, text, disambig, _encoding) except AttributeError: def _translate(context, text, disambig): return QtGui.QApplication.translate(context, text, disambig) class Ui_Boton(object): def setupUi(self, Boton): Boton.setObjectName(_fromUtf8("Boton")) Boton.resize(357, 240) self.pushButtonMnesaje = QtGui.QPushButton(Boton) self.pushButtonMnesaje.setGeometry(QtCore.QRect(130, 90, 75, 23)) self.pushButtonMnesaje.setObjectName(_fromUtf8("pushButtonMnesaje")) self.retranslateUi(Boton) QtCore.QMetaObject.connectSlotsByName(Boton) def retranslateUi(self, Boton): Boton.setWindowTitle(_translate("Boton", "Dialog", None)) self.pushButtonMnesaje.setText(_translate("Boton", "Mensaje", None)) import sys from PyQt4.QtCore import* from PyQt4.QtGui import* class BotonApp(QtGui.QDialog): def __init__(self,parent=None): QtGui.QWidget.__init__(self,parent) self.zi=Ui_Boton() self.zi.setupUi(self) if __name__=='__main__': app=QtGui.QApplication(sys.argv) myapp=BotonApp() myapp.show() sys.exit(app.exec_())
Ventana de mensaje
from PyQt4 import QtCore, QtGui try: _fromUtf8 = QtCore.QString.fromUtf8 except AttributeError: def _fromUtf8(s): return s try: _encoding = QtGui.QApplication.UnicodeUTF8 def _translate(context, text, disambig): return QtGui.QApplication.translate(context, text, disambig, _encoding) except AttributeError: def _translate(context, text, disambig): return QtGui.QApplication.translate(context, text, disambig) class Ui_Mnesaje(object): def setupUi(self, Mnesaje): Mnesaje.setObjectName(_fromUtf8("Mnesaje")) Mnesaje.resize(357, 240) self.label = QtGui.QLabel(Mnesaje) self.label.setGeometry(QtCore.QRect(60, 60, 241, 111)) self.label.setText(_fromUtf8("")) self.label.setObjectName(_fromUtf8("label")) self.retranslateUi(Mnesaje) QtCore.QMetaObject.connectSlotsByName(Mnesaje) def retranslateUi(self, Mnesaje): Mnesaje.setWindowTitle(_translate("Mnesaje", "Dialog", None)) import sys from PyQt4.QtCore import* from PyQt4.QtGui import* class Mensaje(QtGui.QDialog): def __init__(self,parent=None): QtGui.QWidget.__init__(self,parent) self.xi=Ui_Mnesaje() self.xi.setupUi(self) if __name__=='__main__': app=QtGui.QApplication(sys.argv) myapp=Mensaje() myapp.show() sys.exit(app.exec_())
Respuestas
Aquí tienes dos recursos que te pueden servir:
- Pregunta del foro oficial de Qt sobre cómo pasar señales entre diferentes ventanas de una aplicación PyQt.
- Tutorial sobre comunicaciones entre ventanas de aplicaciones PyQy, es un poco viejo pero está bastante bien explicado.
@javiereguiluz
30 septiembre 2014, 23:21
@ing_edsan como los uniste a la final?? que fue lo que hiciste? estoy tratando de hacer algo igual a ti..
@sarethGarcia
9 marzo 2016, 1:27