如何从Python中pyqt5主窗口管理第二窗口

问题描述 投票:0回答:1

首先,我要感谢你。

我工作:Python的3.6和3.7 64 - Win10 64 - PyQt的5.6.11

我创建了三个窗口对qt的设计师PyQt的:

qt_main.py
qt_second.py
qt_third.py
qt_4th
qt_5th
etc...

我加入qt_main两个按钮用于打开第二和第三窗口。当我在btn_newUser点击qt_main,打开第二窗口没有问题。

但是:显示第二窗口后,我想从qt_main窗口管理第二窗口。或者本身(如果你有解决方案)

注意:是否有可能从自身管理的第二窗口,当我从qt_main打开它?

如何管理第二窗口的信号/插槽中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_())
'''

我试着写一个测试方法/函数在qazxsw POI(第二窗口)办理点击即动,我得到了错误:

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

我感到困惑和疲惫。我怎样才能解决这个问题!??哪里是问题的根源!??。

提前致谢。

python python-3.x pyqt pyqt5 qt-designer
1个回答
0
投票

Greeeeetings!

我发现我可以通过下面我在main.py(第一窗口)已经宣布方法/功能管理从第一窗口(main.py)的第二窗口:

def save_info(self):
    QtWidgets.QMessageBox.information(Second_MainWindow, "Plz", "Hi Test", QtWidgets.QMessageBox.Ok)

谢谢

© www.soinside.com 2019 - 2024. All rights reserved.