Я просмотрел различные сообщения, похожие на сообщения, в которых есть похожие проблемы, также попробовал ответы, но у меня это не сработало. Итак, вот моя проблема -
У меня есть два windows - TestBox и MailBox, когда я нажимаю кнопку TestBox Pushbutton вместе с аргументом пути ввода, он должен открыть окно MailBox, это новое окно MailBox отправит ModifiedPath в TestBox снова, когда я закрываю окно MailBox
Я создал оба windows в PyQt5 Tool и создал файл ui, а затем преобразовал его в файл Python с помощью - python -m PyQt5.ui c .pyui c testboxui.ui -o testboxui.py
Я не касаюсь файла testboxui.py или mailboxui.py, поскольку они хранятся при изменении любых модификаций, сделанных при повторном преобразовании. Вместо этого я создал еще один файл TestBox.py и MailBox.py для импорта и записи функций.
Вот производимый минимальный код -
TestBox.py [Основное приложение Код]
import os,sys
from PyQt5 import QtWidgets, QtGui, QtCore
from testboxui import Ui_TestBox
from MailBox import AppWindow_MailList
app = QtWidgets.QApplication(sys.argv)
class AppWindow_MainBox(QtWidgets.QMainWindow):
def __init__(self):
super(AppWindow_MainBox, self).__init__()
self.ui = Ui_TestBox()
self.ui.setupUi(self)
self.ui.openbox.clicked.connect(self.fcn_maillist)
def fcn_maillist(self):
GetPath = os.getcwd()
dialog = AppWindow_MailList(self,GetPath)
if dialog.exec_() == AppWindow_MailList.Accepted:
GetPath = dialog.get_output()
def main():
app = QtWidgets.QApplication(sys.argv)
application = AppWindow_MainBox()
application.show()
sys.exit(app.exec_())
if __name__ == '__main__':
main()
testboxui.py [Создано PyQt5 Tool непосредственно из файла пользовательского интерфейса]
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_TestBox(object):
def setupUi(self, TestBox):
TestBox.setObjectName("TestBox")
TestBox.resize(647, 279)
self.centralwidget = QtWidgets.QWidget(TestBox)
self.centralwidget.setObjectName("centralwidget")
self.openbox = QtWidgets.QPushButton(self.centralwidget)
self.openbox.setGeometry(QtCore.QRect(210, 60, 231, 91))
self.openbox.setObjectName("openbox")
TestBox.setCentralWidget(self.centralwidget)
self.retranslateUi(TestBox)
QtCore.QMetaObject.connectSlotsByName(TestBox)
def retranslateUi(self, TestBox):
_translate = QtCore.QCoreApplication.translate
TestBox.setWindowTitle(_translate("TestBox", "TestBox"))
self.openbox.setText(_translate("TestBox", "Click Here \n""To Open Another Window"))
MailBox.py [Код дочернего приложения]
import os,sys
from PyQt5 import QtWidgets, QtGui, QtCore
from maillistui import Ui_MailList
app = QtWidgets.QApplication(sys.argv)
class AppWindow_MailList(QtWidgets.QMainWindow):
def __init__(self,RcvPath=''):
super(AppWindow_MailList, self).__init__()
self.ui = Ui_MailList()
self.ui.setupUi(self)
self.init_fcn(RcvPath)
def init_fcn(self,RcvPath):
self.ui.browse.clicked.connect(self.browse_fcn)
if not RcvPath:
self.RcvPath = os.getcwd()
else:
self.RcvPath = RcvPath
self.ui.path.setText(self.RcvPath)
def closeEvent(self, event):
event.accept()
def get_output(self):
return os.path.join(self.RcvPath,'TestFolder')
def browse_fcn(self):
pass
def main():
app = QtWidgets.QApplication(sys.argv)
application = AppWindow_MailList()
application.show()
sys.exit(app.exec_())
if __name__ == '__main__':
main()
maillistui.py - [Производится PyQt5 непосредственно из файла пользовательского интерфейса]
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_MailList(object):
def setupUi(self, MailList):
MailList.setObjectName("MailList")
MailList.resize(647, 279)
self.centralwidget = QtWidgets.QWidget(MailList)
self.centralwidget.setObjectName("centralwidget")
self.path = QtWidgets.QLineEdit(self.centralwidget)
self.path.setGeometry(QtCore.QRect(50, 30, 511, 41))
self.path.setObjectName("path")
self.browse = QtWidgets.QPushButton(self.centralwidget)
self.browse.setGeometry(QtCore.QRect(450, 90, 112, 41))
self.browse.setObjectName("browse")
MailList.setCentralWidget(self.centralwidget)
self.retranslateUi(MailList)
QtCore.QMetaObject.connectSlotsByName(MailList)
def retranslateUi(self, MailList):
_translate = QtCore.QCoreApplication.translate
MailList.setWindowTitle(_translate("MailList", "MailList"))
self.browse.setText(_translate("MailList", "Browse"))
Раньше я создавал диалог PyQt5 с помощью QtWidgets.QDialog, который я могу легко загрузить в QtWidgets.QApplication. Но здесь оба являются QApplication (QMainWindow), но затрудняет вызов пользовательского интерфейса в пользовательском интерфейсе.
Что-то не так, что я здесь делаю ???