Wie erstelle ich neue PyQt4-Fenster aus einem vorhandenen Fenster?
Ich habe versucht, mit python3 und Qt4 ein neues Fenster aus einem vorhandenen Fenster aufzurufen.
Ich habe mit Qt Designer (der Hauptanwendung und einer anderen) zwei Fenster erstellt und die mit Qt Designer generierten .ui-Dateien in .py-Skripte konvertiert. Es scheint jedoch nicht möglich zu sein, mit der Hauptanwendung neue Fenster zu erstellen .
Ich habe versucht, dies zu tun:
############### 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_())
Aber ich bekomme diese Fehlermeldung:
QCoreApplication::exec: The event loop is already running
QPixmap: Must construct a QApplication before a QPaintDevice