Сначала я хотел бы поблагодарить вас.
Я работаю с: Python 3.6 и 3.7 64bit - Win10 64bit - PyQT 5.6.11
Я создал три окна с помощью qt-designerдля PyQT:
qt_main.py
qt_second.py
qt_third.py
qt_4th
qt_5th
etc...
Я добавил две кнопки в qt_main
для открытия 2-го и 3-го окон.Когда я нажимаю btn_newUser
в qt_main
, второе окно открывается без проблем.
Но: После показа второго окна я хочу управлять вторым окном из окна qt_main
.или от самого себя (если у вас есть решение)
примечание: возможно ли управлять 2-м окном из себя, когда я открывал его из qt_main
! ??
Как я могу управлять сигналами / слотами2-го окна в qt_main
окне! ??.
qt_main.py
:
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
MainWindow.setObjectName("MainWindow")
MainWindow.setWindowModality(QtCore.Qt.NonModal)
MainWindow.setEnabled(True)
MainWindow.resize(450, 350)
<...skipped...>
<...skipped...>
self.btn_newUser.setObjectName("btn_newUser")
self.btn_newUser.clicked.connect(self.window_newUser) ##2nd window.
<...skipped...>
<...skipped...>
def window_newUser(self):
# 2nd window is opened without problem.
self.Second_MainWindow = QtWidgets.QMainWindow()
ui = qt_second.Ui_Second_MainWindow()
ui.setupUi(self.Second_MainWindow)
self.Second_MainWindow.show()
if __name__ == "__main__":
app = QtWidgets.QApplication(sys.argv)
app.setStyle("fusion")
MainWindow = QtWidgets.QMainWindow()
ui = Ui_MainWindow()
ui.setupUi(MainWindow)
MainWindow.show()
sys.exit(app.exec_())
qt_second.py
:
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_Second_MainWindow(object):
def setupUi(self, Second_MainWindow):
Second_MainWindow.setObjectName("Second_MainWindow")
Second_MainWindow.setWindowModality(QtCore.Qt.NonModal)
<...skipped...>
<...skipped...>
self.txt_username.setObjectName("txt_username")
<...skipped...>
<...skipped...>
self.btn_save_info.setObjectName("btn_save_info") ##I want to fetch the content of txt_username then validate it and send it to DB.
<...skipped...>
<...skipped...>
# I commented it to show this window from qt_main window.
'''
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
app.setStyle("fusion")
Second_MainWindow = QtWidgets.QMainWindow()
ui = Ui_Second_MainWindow()
ui.setupUi(Second_MainWindow)
Second_MainWindow.show()
sys.exit(app.exec_())
'''
Я пытался написать тестметод / функция для обработки Click-Acttion в btn_save_info
(второе окно), и я получил ошибку:
Traceback (most recent call last):
File ".\qt_main.py", line 211, in window_newUser
Second_MainWindow.btn
NameError: name "Second_MainWindow" is not defined
def save_info(self):
QtWidgets.QMessageBox.information(Second_MainWindow, "Plz", "Hi Test", QtWidgets.QMessageBox.Ok)
Я растерялся и устал.Как я могу решить эту проблему! ??Где причина проблемы! ??.
Заранее спасибо.