漫谈PyQt-多窗口的建立|项目复盘

2,086 阅读2分钟

作者:看那个码农

公众号:看那个码农

1.项目简介

基于Python3.x,使用PyQt5制作多窗口GUI的demo

2.项目准备

  • Python3.x
  • PyQt5
  • Pycharm

3.项目流程

1.在Pycharm中打开Qt Designer

image.png

2. 利用Qt Designer中设计GUI窗口

image.png

3.选择Main Window,拖动QPushButton创建一个Ui

image.png

4.保存至项目目录

image.png

5.重复以上步骤,再重复创建3个UI

image.png

最后得到4个UI界面

image.png

6.将UI文件转换为Python代码

image.png

得到4个UI对应的Python代码文件

image.png

将UI 1做为其它3个UI的启动窗口

image.png

在UI 1对应的fir.py文件中添加下列代码

if __name__=='__main__':
    app=QtWidgets.QApplication(sys.argv)
    MainWindow=QtWidgets.QMainWindow()
    ui=Ui_MainWindow()
    ui.setupUi(MainWindow)
    MainWindow.show()
    sys.exit(app.exec_())

可正常运行代码:

image.png

显示结果:

image.png

7.窗口之间的关联

我们将刚刚的窗口创建好了后,将UI 1作为主窗口,将UI 2,3,4作为子窗口,实现UI 1对UI 2,3,4的调用

由于UI 2,3,4对应的

  • sec.py,
  • thi.py,
  • fort.py

自动转换后的代码中,默认继承自object类

image.png

为了执行窗口操作,需要将继承的object类修改为QMainWindows类,

由于QMainWindows类位于PyQt5.QtWidgets模块中,

因此需要在

  • sec.py
  • thi.py
  • fort.py

中进行导入,修改后的代码为

image.png

修改完sec.py,thi.py,fort.py文件的继承类后,

需要在fir.py文件中定义一个槽函数,用来使用

QMainWindows对象的show()方法,

用于打开UI 2,3,4 这3个子窗口

def open(self):
    self.second=sec.Ui_MainWindow()
    self.second.show()
    self.third=thi.Ui_MainWindow()
    self.third.show()
    self.fouth=fort.Ui_MainWindow()
    self.fouth.show()

同时在fir.py文件中连接信号槽函数

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

8.运行程序

image.png

点击打开按钮,出现三个新的小窗口

image.png

4.项目思考

该小项目利用PyQt5制作简易的GUI界面,同时基于Qt的信号槽函数机制实现了按钮信号的槽函数响应,成功实现多窗口关联。

适合新手尝试学习PyQt5。

5.项目收获

  • 新手应注意import后不能出现数字,如import 2,这样的导入方式是不正确的
  • 新手应注意需要在子窗口程序中,将继承的object类修改为QMainWindow类。

如果你觉得这篇内容对你有帮助的话:

1、点赞支持下吧,让更多的人也能看到这篇内容

2、关注公众号:看那个码农,我们一起学习一起进步。

本文正在参与「掘金 2021 春招闯关活动」, 点击查看 活动详情