PyQt 入门与进阶教程
🧩 为什么学习 PyQt?
tkinter 是标准库自带的 GUI 工具,但功能和界面风格较为基础。而 PyQt 是一个基于 Qt 库的 Python 图形界面框架,具有:
- 界面美观、跨平台
- 功能强大(支 持多窗口、绘图、信号槽机制)
- 支持 Qt Designer 可视化设计界面
适合用来开发专业的桌面应用程序。
✅ 安装 PyQt5
pip install PyQt5
第一个 PyQt 应用程序
导入 sys
从 PyQt5.Qt控件 导入 Q应用程序, Q标签, Q小部件
app = Q应用程序(sys.参数)
窗口 = Q小部件()
窗口.设置窗口标题("你好 PyQt")
窗口.调整大小(300, 200)
标签 = Q标签("欢迎使用 PyQt!", parent=窗口)
标签.移动(100, 80)
窗口.显示()
sys.退出(app.退出_())'
说明:
QApplication:应用对象,必须有QWidget:基础窗口部件QLabel:文本标签show():显示窗口sys.exit():程序退出处理
界面控件与布局
常见控件:
| 控件 | 类名 | 功能 |
|---|---|---|
| 按钮 | QPushButton | 点击事件 |
| 输入框 | QLineEdit | 文本输入 |
| 标签 | QLabel | 显示文字 |
| 文本框 | QTextEdit | 多行文本 |
| 下拉框 | QComboBox | 选择菜单 |
| 单选框 | QRadioButton | 单选项 |
| 复选框 | QCheckBox | 多选项 |
示例:简单表单
从 PyQt5.Qt控件 导入 Q应用程序, Q小部件, Q标签, Q行编辑, Q按钮, Q垂直布局
导入 sys
类 窗口(Q小部件):
定 __初始化__(self):
父类().__初始化__()
self.设置窗口标题("登录界面")
self.调整大小(300, 150)
self.标签1 = Q标签("用户名")
self.输入1 = Q行编辑()
self.标签2 = Q标签("密码")
self.输入2 = Q行编辑()
self.输入2.设置回显模式(Q行编辑.密码)
self.按钮 = Q按钮("登录")
self.按钮.点击.连接(self.登录)
布局 = Q垂直布局()
布局.添加小部件(self.标签1)
布局.添加小部件(self.输入1)
布局.添加小部件(self.标签2)
布局.添加小部件(self.输入2)
布局.添加小部件(self.按钮)
self.设置布局(布局)
定 登录(self):
用户名 = self.输入1.text()
密码 = self.输入2.text()
打印(f"用户名: {用户名}, 密码: {密码}")
app = Q应用程序(sys.argv)
win = 窗口()
win.显示()
sys.退出(app.退出_())
信号与槽机制(事件处理)
在 PyQt 中,信号(Signal) 是用户触发的事件,槽(Slot) 是用来处理这个事件的函数。
按钮.点击.连接(self.处理函数)
你也可以自定义信号和槽函数,或断开信号:
按钮.点击.断开连接() # 取消绑定
Qt Designer 可视化设计(推荐)
-
安装 Qt Designer:
- 安装 PyQt5-tools:
pip install pyqt5-tools - 找到 designer.exe 并运行
- 安装 PyQt5-tools:
-
使用 Designer 拖放设计界面,保存为
.ui文件 -
使用
pyuic5将 UI 转换为 Python 代码:
pyuic5 -o ui_main.py main.ui
文件选择与消息弹窗
从 PyQt5.Qt控件 导入 Q文本对话框, Q消息框
文件名, _ = Q文本对话框.获取打开问报名(self, "打开文件")
消息框.信息(self, "提示", f"你选择了:{文件名}")
✅ 小结
| 模块 | 模块 | 用法 |
|---|---|---|
| Q应用程序 | QApplication | 应用初始化 |
| Q小部件 | QWidget | 窗口类 |
| Q按钮 | QPushButton | 按钮,支持点击事件 |
| Q垂直布局 | QVBoxLayout | 布局管理器 |
| 信号/槽 | 信号/槽 | 用户操作与逻辑的连接 |
| Q文本对话框 | QFileDialog | 文件对话框 |
| Q消息框 | QMessageBox | 信息弹窗 |