PyQt5
PyQt5学习笔记——快速入门。
参考链接:
快速入门
基本框架
QWidget QApplication
1 | import sys |

窗口图标
QIcon
窗口图标通常显示在窗口的左上角,标题栏的最左边。
可以在上一节的代码(过程式编程)中添加以下语句:
1 | from PyQt5.QtGui import QIcon |
但使用面向对象的编程方式,新建一个类,是更常用的写法:
1 | import sys |
![]()
提示框
QToolTip QPushButton
QFont
1 | import sys |

关闭窗口
btn.clicked.connect(func)
关闭窗口除了点击右上角的❌,也可以通过程序来完成。
涉及到single和slot的知识。感觉可以理解为事件回调函数。
1 | import sys |
也可以自定义回调函数,如:
1 | def initUI(self): |
消息盒子
QMessageBox
1 | import sys |
窗口居中
1 | import sys |
状态栏
QWidget本身是没有状态栏和菜单栏的,但QMainWindow(继承自QWidget)提供了常用的主窗口功能,能够用来创建一些状态栏、工具栏和菜单栏。
状态栏用于显示应用的状态信息。
1 | import sys |
菜单栏
1 | import sys |
子菜单
QMenu
1 | import sys |

勾选菜单
1 | import sys |
右键菜单
右键菜单也是菜单(QMenu)。
在上一节的代码中添加以下方法:
1 | # 菜单栏右键菜单 |
工具栏
菜单栏包含所有的命令,工具栏则是常用命令的集合。(不一定,有时候工具栏比菜单栏还要丰富)
菜单栏只有一个,工具栏可以有多个。
1 | import sys |

当QAction设置了图标时,工具栏优先使用图标,没有图标时,再使用文字。
主窗口
封装一个App类,QuickStartApp.py
1 | import sys |
main.py
1 | import sys |
绝对定位
1 | import sys |
盒布局
盒布局有更强的适应性
- 水平布局 - QHBoxLayout
- 垂直布局 - QVBoxLayout
- 添加弹性空间 - addStretch
1 | import sys |

栅格布局
栅格布局是最常用的布局,它把窗口分为行和列。
使用QGridLayout模块创建和使用栅格布局。
1 | import sys |

留言板
1 | import sys |

登录界面
1 | # _*_ coding:UTF-8 _*_ |

注册界面
1 | import sys |

进阶实践
文件系统模型
普通
QTreeView QFileSystemModel
1 | import sys |

带可选框
1 | import sys |

表格
QTableWidget
1 | import sys |

自定义
基础知识
基础控件
QWidget
1 | .resize() |
QMainWindow
1 | .statusBar() .showMessage("") |
QMenu
1 | .addMenu() |
QAction
1 | QAction(QIcon("exit.png"), "&退出", self) |
QPushButton
1 | QPushButton(string text, QWidget paren=None) # text是按钮上的文字,第二个参数是为按钮指定的父级对象 |
QTextEdit
1 |
QLineEdit
1 |
QLabel
1 |
QToolTip
1 | QToolTip.setFont() # 静态方法,设置提示框的字体 |
QCoreApplication
1 | .instance().quit() |
QMessageBox
1 | .question(parent, title, text, optional_buttons, default_button) - QMessageBox.Yes | QMessageBox.No |
QDesktopWidget
1 | .availableGeometry() # 获取屏幕对应的QRec |
xxxLayout
1 | .addWidget() |
QStackWidget
1 |
QTabWidget
1 |
基本事件
closeEvent
- 窗口关闭事件
contextMenuEvent
- 右键菜单事件
QTableWidget
onItemSelectionChanged
1 | def onItemSelectionChanged(self): |
handleCellChanged
1 | def handleCellChanged(self, row, column): |
注意点
QMainWindow中,不能直接放按钮之类的组件,QWidget可以。