Como criar novas janelas PyQt4 a partir de uma janela existente?
Eu tenho tentado chamar uma nova janela de uma existente usando python3 e Qt4.
Eu criei duas janelas usando o Qt Designer (o aplicativo principal e outro), e converti os arquivos .ui gerados pelo Qt Designer em scripts .py - mas não consigo criar novas janelas a partir do aplicativo principal .
Eu tentei fazer isso:
############### MAIN APPLICATION SCRIPT ################
from PyQt4 import QtCore, QtGui
import v2
try:
_fromUtf8 = QtCore.QString.fromUtf8
except AttributeError:
_fromUtf8 = lambda s: s
class Ui_Form(object):
def setupUi(self, Form):
Form.setObjectName(_fromUtf8("Form"))
Form.resize(194, 101)
self.button1 = QtGui.QPushButton(Form)
self.button1.setGeometry(QtCore.QRect(50, 30, 99, 23))
self.button1.setObjectName(_fromUtf8("button1"))
self.retranslateUi(Form)
QtCore.QMetaObject.connectSlotsByName(Form)
def retranslateUi(self, Form):
Form.setWindowTitle(QtGui.QApplication.translate("Form", "Form", None, QtGui.QApplication.UnicodeUTF8))
self.button1.setText(QtGui.QApplication.translate("Form", "Ventana", None, QtGui.QApplication.UnicodeUTF8))
self.button1.connect(self.button1, QtCore.SIGNAL(_fromUtf8("clicked()")), self.mbutton1)
def mbutton1(self):
v2.main()
if __name__ == "__main__":
import sys
app = QtGui.QApplication(sys.argv)
Form = QtGui.QWidget()
ui = Ui_Form()
ui.setupUi(Form)
Form.show()
sys.exit(app.exec_())
################## SECOND WINDOW #######################
from PyQt4 import QtCore, QtGui
try:
_fromUtf8 = QtCore.QString.fromUtf8
except AttributeError:
_fromUtf8 = lambda s: s
class Ui_Form(object):
def setupUi(self, Form):
Form.setObjectName(_fromUtf8("Form"))
Form.resize(400, 300)
self.label = QtGui.QLabel(Form)
self.label.setGeometry(QtCore.QRect(160, 40, 57, 14))
self.label.setObjectName(_fromUtf8("label"))
self.retranslateUi(Form)
QtCore.QMetaObject.connectSlotsByName(Form)
def retranslateUi(self, Form):
Form.setWindowTitle(QtGui.QApplication.translate("Form", "Form", None, QtGui.QApplication.UnicodeUTF8))
self.label.setText(QtGui.QApplication.translate("Form", "LABEL 2", None, QtGui.QApplication.UnicodeUTF8))
def main():
import sys
app = QtGui.QApplication(sys.argv)
Form = QtGui.QWidget()
ui = Ui_Form()
ui.setupUi(Form)
Form.show()
sys.exit(app.exec_())
Mas eu recebo esta mensagem de erro:
QCoreApplication::exec: The event loop is already running
QPixmap: Must construct a QApplication before a QPaintDevice