当前位置:   article > 正文

pyqt多窗口设计(2步实现,嘴对嘴教学,源码复制可用)_qt mainwindow中创建子窗口

qt mainwindow中创建子窗口

本文涉及:PyQt5,Qt Designer,PyCharm

 

目录

先看下完成效果: ​​​​​​​

步骤1:用Qt Designer创建2个窗体

步骤2:将子窗体和主窗体上的按钮控件进行关联

完整代码


先看下完成效果: 

        视频里我只设计了1个主窗口和1个子窗口,不管你需要多少个子窗口,其创建方法都是一样的。下面我来介绍一下具体的实现方式。


步骤1:用Qt Designer创建2个窗体

        打开Qt Designer,直接一次性新建2个Main Window窗体,然后在主窗体的中间我放了1个按钮控件,如下图所示:

         然后分别保存2个窗体的.ui文件到同1个文件夹中。注意:在保存时,需要分别将鼠标焦点定位到要保存的窗体上,单独为每个窗体进行保存;而在将.ui文件转化为.py文件时,也需要分别选中每个.ui文件,单独进行转换,完成后如下图所示:


步骤2:将子窗体和主窗体上的按钮控件进行关联

        首先看一下untitled2.py文件,在自动转换后的代码中,默认继承object类,代码如下:

class Ui_MainWindow(object):

        为了执行窗口操作,需要将继承的object类修改为QMainWindow类,由于QMainWindow类位于PyQt5.QtWidgets模块中,因此需要进行导入,修改后的代码如下:

  1. from PyQt5.QtWidgets import QMainWindow
  2. class Ui_MainWindow(QMainWindow):

        修改完子窗体的.py文件中的继承类之后,打开untitled.py主窗体文件,在该文件中,首先定义一个槽函数,用来使用QMainWindow对象的show()方法打开子窗体,代码如下:

        

  1. def open(self): # 创建1个自定义函数open打开子窗体
  2. import untitled2 # 导入子窗体
  3. self.second = untitled2.Ui_MainWindow() # 引用子窗体,并命名为second
  4. self.second.resize(736, 467) # 初始化子窗体大小
  5. self.second.setWindowTitle("这是子窗体") # 初始化子窗体的标题
  6. self.second.show() # 显示子窗体

        然后将PushButton按钮的clicked()信号与自定义的槽函数open()关联,代码如下:

self.pushButton.clicked.connect(self.open)

        运行untitled.py主窗体,点击按钮即可打开子窗体。


完整代码

        有不清楚的,可以对照下面源码看一下。

        主窗体源码(untitled.py):

  1. from PyQt5 import QtCore, QtGui, QtWidgets
  2. class Ui_MainWindow(object):
  3. def setupUi(self, MainWindow):
  4. MainWindow.setObjectName("MainWindow")
  5. MainWindow.resize(750, 500)
  6. self.centralwidget = QtWidgets.QWidget(MainWindow)
  7. self.centralwidget.setObjectName("centralwidget")
  8. self.pushButton = QtWidgets.QPushButton(self.centralwidget)
  9. self.pushButton.setGeometry(QtCore.QRect(190, 140, 291, 81))
  10. self.pushButton.setObjectName("pushButton")
  11. # 将按钮和显示第2个窗口的自定义函数关联
  12. self.pushButton.clicked.connect(self.open)
  13. MainWindow.setCentralWidget(self.centralwidget)
  14. self.statusbar = QtWidgets.QStatusBar(MainWindow)
  15. self.statusbar.setObjectName("statusbar")
  16. MainWindow.setStatusBar(self.statusbar)
  17. self.retranslateUi(MainWindow)
  18. QtCore.QMetaObject.connectSlotsByName(MainWindow)
  19. def retranslateUi(self, MainWindow):
  20. _translate = QtCore.QCoreApplication.translate
  21. MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
  22. self.pushButton.setText(_translate("MainWindow", "打开新窗口"))
  23. def open(self): # 创建1个自定义函数open打开子窗体
  24. import untitled2 # 导入子窗体
  25. self.second = untitled2.Ui_MainWindow() # 引用子窗体,并命名为second
  26. self.second.resize(736, 467) # 初始化子窗体大小
  27. self.second.setWindowTitle("这是子窗体") # 初始化子窗体的标题
  28. self.second.show() # 显示子窗体
  29. import sys
  30. if __name__ == '__main__':
  31. app = QtWidgets.QApplication(sys.argv)
  32. MainWindow = QtWidgets.QMainWindow()
  33. ui = Ui_MainWindow()
  34. ui.setupUi(MainWindow)
  35. MainWindow.show()
  36. sys.exit(app.exec_())

        子窗体源码(untitled2.py):

  1. from PyQt5 import QtCore, QtGui, QtWidgets
  2. from PyQt5.QtWidgets import QMainWindow
  3. class Ui_MainWindow(QMainWindow):
  4. def setupUi(self, MainWindow):
  5. MainWindow.setObjectName("MainWindow")
  6. MainWindow.resize(736, 467)
  7. self.centralwidget = QtWidgets.QWidget(MainWindow)
  8. self.centralwidget.setObjectName("centralwidget")
  9. MainWindow.setCentralWidget(self.centralwidget)
  10. self.statusbar = QtWidgets.QStatusBar(MainWindow)
  11. self.statusbar.setObjectName("statusbar")
  12. MainWindow.setStatusBar(self.statusbar)
  13. self.retranslateUi(MainWindow)
  14. QtCore.QMetaObject.connectSlotsByName(MainWindow)
  15. def retranslateUi(self, MainWindow):
  16. _translate = QtCore.QCoreApplication.translate
  17. MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
  18. def __init__(self):
  19. super(Ui_MainWindow, self).__init__()
  20. self.setupUi(self)

天冷手寒,码文不易,还望各位看官老爷点一下关注,妾身感激涕零 ~~~

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Gausst松鼠会/article/detail/405121
推荐阅读
相关标签
  

闽ICP备14008679号