PyQt5 学习笔记

本笔记主要参考教程:Python Qt 简介 —— 白月黑羽

目的在于学习使用 PyQt 和 QtDesigner 开发图形化界面

1. PyQt 安装和在 pycharm 中联动

参考这篇博客:PyCharm+PyQt5+QtDesigner配置

2. 第一个案例

首先使用 QtDesigner 画出相应的图形界面,很简单的一个图

其中涉及有关布局 layout 的部分,不在这里细讲,直接参看B站教程:页面布局 layout (主要觉得比较抽象。和前端的布局很像,同样,我也不大会…)

再放一个参考教程 pyqt5 布局 layout 收集
在这里插入图片描述
然后使用 pyuic5 生成相应的 py文件,引入到主程序中:

from PyQt5.QtWidgets import QApplication, QMainWindow
import mainWindows


# QMainWindow 为一个控件类,表示主窗口
# 要创建一个控件,就需要实例化这个控件类
# 一般把一个窗口及其控件封装至一个类中
# 我们自定义(封装)一个窗口类,继承自QMainWindow
class MainWindow(QMainWindow):

    def __init__(self):
        super().__init__()
        # 将 ui文件:mainWindows.py 导入定义界面类
        self.ui = mainWindows.Ui_MainWindow()
        # 初始化界面
        self.ui.setupUi(self)
        # 设置窗口标题
        self.setWindowTitle("第一个案例")


if __name__ == '__main__':
    # QApplication 提供了整个图形界面程序的底层管理功能,应首先创建它
    app = QApplication([])
    # 创建主窗口这个控件,需实例化主窗口类
    mainw = MainWindow()
    # 显示主窗口
    mainw.show()
    # 只有最后一个关口关闭,才可以结束程序
    app.exec_()

这里解释说明几点:

① QApplication

QApplication 提供了整个图形界面程序的底层管理功能,所以应首先创建它

app = QApplication([])

② QMainWindow

我们要在窗口中创建一个控件,就需要实例化这个控件类

PyQt5.QtWidgets 中引入的 QMainWindow 表示主窗口,所以需要实例化它

但一个窗口中有很多子控件,所以,为了方便管理,我们通常将一个窗口封装为一个类,即:

# 继承自QMainWindow
class MainWindow(QMainWindow):

    def __init__(self):
        super().__init__()
        # 将 ui文件:mainWindows.py 导入定义界面类
        self.ui = mainWindows.Ui_MainWindow()
        # 初始化界面
        self.ui.setupUi(self)

③ 控件的继承关系

直接上图吧,感觉这一部分用的不多,主要由 QtDesigner 帮我们处理完成
在这里插入图片描述

④ 信号(signal)与 槽(slot)

信号可理解为一个控件的动作触发的信号,槽即可理解为处理这个 signal 的函数

他们一般这样联系起来:

button.clicked.connect(handleCalc)

用QT的术语来解释上面这行代码,就是:把 button 被点击(clicked) 的信号(signal), 连接(connect)到了 handleCalc 这样的一个 slot上

⑤ 启动窗口

...
# 显示主窗口
mainw.show()
# 只有最后一个关口关闭,才可以结束程序
app.exec_()

⑥ 总结

创建程序的一般步骤如下:

  1. 创建 app: app = QApplication([])
  2. 定义窗口类,完成信号与槽的相关逻辑:
# 继承自QMainWindow
class MainWindow(QMainWindow):

    def __init__(self):
        super().__init__()
        # 将 ui文件:mainWindows.py 导入定义界面类
        self.ui = mainWindows.Ui_MainWindow()
        # 初始化界面
        self.ui.setupUi(self)
  1. 实例化窗口类:mainw = MainWindow()
  2. 启动窗口:
mainw.show()
app.exec_()

⑦ 踩坑

  1. 主窗口的类名必须是 MainWindow,即:
class MainWindow(QMainWindow
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值