Возникает баг при решении задачи - ввести некоторое значение в форме 1 и отобразить форму 2 с этим заданным значением.
Код прилагаю. В результате работы скрипта значение из LineEdit, в самом деле, передается во вторую форму, но при этом возникает
QCoreApplication::exec: The event loop is already running.
Закрытие мышкой второй формы не делает активным первое окно, а процесс pythonw.exe приходится убивать руками.
Как корректно передавать eventloop между двумя окошками, так чтобы уничтожение
второй формочки перезапускало или возвращало назад первую формочку для работы?
Как верно поставить завершения цикла обработки событий в этой программе?
Буду сильно благодарен за ключевые подсказки.
# -*- coding: utf-8 -*-
import sys
from PyQt4 import QtCore, QtGui
# исполнение графического интерфейса первой формы
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
MainWindow.setObjectName("MainWindow")
MainWindow.resize(319, 184)
self.centralwidget = QtGui.QWidget(MainWindow)
self.centralwidget.setObjectName("centralwidget")
self.lineEdit = QtGui.QLineEdit(self.centralwidget)
self.lineEdit.setGeometry(QtCore.QRect(110, 50, 101, 20))
self.lineEdit.setObjectName("lineEdit")
self.pushButton = QtGui.QPushButton(self.centralwidget)
self.pushButton.setGeometry(QtCore.QRect(120, 80, 75, 24))
self.pushButton.setObjectName("pushButton")
MainWindow.setCentralWidget(self.centralwidget)
self.menubar = QtGui.QMenuBar(MainWindow)
self.menubar.setGeometry(QtCore.QRect(0, 0, 319, 19))
self.menubar.setObjectName("menubar")
MainWindow.setMenuBar(self.menubar)
self.statusbar = QtGui.QStatusBar(MainWindow)
self.statusbar.setObjectName("statusbar")
MainWindow.setStatusBar(self.statusbar)
self.retranslateUi(MainWindow)
QtCore.QMetaObject.connectSlotsByName(MainWindow)
def retranslateUi(self, MainWindow):
MainWindow.setWindowTitle(QtGui.QApplication.translate("MainWindow", "MainWindow", None, QtGui.QApplication.UnicodeUTF8))
self.pushButton.setText(QtGui.QApplication.translate("MainWindow", "PushButton", None, QtGui.QApplication.UnicodeUTF8))
# исполнение графического интерфейса второй формы
class Ui_SecondWindow(object):
def setupUi(self, MainWindow):
MainWindow.setObjectName("MainWindow")
MainWindow.resize(380, 184)
self.centralwidget = QtGui.QWidget(MainWindow)
self.centralwidget.setObjectName("centralwidget")
self.lineEdit = QtGui.QLineEdit(self.centralwidget)
self.lineEdit.setGeometry(QtCore.QRect(260, 0, 113, 20))
self.lineEdit.setObjectName("lineEdit")
self.lineEdit_2 = QtGui.QLineEdit(self.centralwidget)
self.lineEdit_2.setGeometry(QtCore.QRect(0, 120, 113, 20))
self.lineEdit_2.setObjectName("lineEdit_2")
MainWindow.setCentralWidget(self.centralwidget)
self.menubar = QtGui.QMenuBar(MainWindow)
self.menubar.setGeometry(QtCore.QRect(0, 0, 380, 19))
self.menubar.setObjectName("menubar")
MainWindow.setMenuBar(self.menubar)
self.statusbar = QtGui.QStatusBar(MainWindow)
self.statusbar.setObjectName("statusbar")
MainWindow.setStatusBar(self.statusbar)
self.retranslateUi(MainWindow)
QtCore.QMetaObject.connectSlotsByName(MainWindow)
def retranslateUi(self, MainWindow):
MainWindow.setWindowTitle(QtGui.QApplication.translate("MainWindow", "MainWindow", None, QtGui.QApplication.UnicodeUTF8))
# инициализация класса первой формы
class MainWindow(QtGui.QMainWindow):
def __init__(self, parent=None):
QtGui.QMainWindow.__init__(self, parent)
self.ui = Ui_MainWindow()
self.ui.setupUi(self)
self.connect(self.ui.pushButton, QtCore.SIGNAL('clicked()'), self.CopyAndShow)
def CopyAndShow(self):
b=(unicode(self.ui.lineEdit.displayText()))
# # инициализация класса второй формы
class SecondWindow(QtGui.QMainWindow):
def __init__(self, parent=None):
QtGui.QMainWindow.__init__(self, parent)
self.ui = Ui_SecondWindow()
self.ui.setupUi(self)
self.ui.lineEdit.setText (b)
self.ui.lineEdit_2.setText (b)
app2 = QtGui.QApplication(sys.argv)
w2=SecondWindow()
w2.show()
app1 = QtGui.QApplication(sys.argv)
w1 =MainWindow()
w1.show()
app1.exec_()