PyQt5 从入门到实战:构建你的第一个桌面应用
1. 环境搭建与安装
使用pip包管理器可以轻松完成PyQt5的安装。
基本安装
在命令行中执行以下命令安装核心库:
bash
pip install PyQt5 -i https://pypi.tuna.tsinghua.edu.cn/simple
安装开发者工具
为了使用可视化界面设计工具,建议安装pyqt5-tools包:
bash
pip install PyQt5-tools -i https://pypi.tuna.tsinghua.edu.cn/simple
配置Qt Designer
在pycharm中找到外部工具

程序为python安装路径下site-packages的中qt5_applications\Qt\bin\designer.exe文件
配置PyUIC

程序为python的位置
bash
实参为-m PyQt5.uic.pyuic $FileName$ -o $FileNameWithoutExtension$.py
配置Pyrcc

程序为python的位置
bash
实参为$FileName$ -o $FileNameWithoutExtension$_rc.py
验证安装
运行以下代码验证PyQt5是否安装成功:
python
import sys
from PyQt5.QtWidgets import QApplication, QWidget
app = QApplication(sys.argv)
window = QWidget()
window.setWindowTitle('我的第一个PyQt5应用')
window.resize(400, 300)
window.show()
sys.exit(app.exec_())
如果出现空白窗口,则表示环境配置成功。
2. PyQt5 核心概念
2.1 应用程序架构
PyQt5应用的基本结构包含三个主要部分:
- QApplication:管理应用程序的控制流和主要设置(每个应用只需一个实例)
- 窗口部件:所有用户界面元素的基类,如按钮、标签等
- 事件循环 :通过
app.exec_()
启动,用于处理用户交互
2.2 信号与槽机制
这是PyQt5处理事件的核心机制:
- 信号:由事件触发(如按钮点击)
- 槽:响应信号的函数
示例代码:
python
from PyQt5.QtWidgets import QApplication, QPushButton
def button_clicked():
print("按钮被点击了!")
app = QApplication([])
button = QPushButton('点击我')
button.clicked.connect(button_clicked) # 连接信号与槽
button.show()
app.exec_()
3. 使用Qt Designer进行可视化设计
3.1 启动Qt Designer
安装PyQt5-tools后,可通过命令行启动:
bash
designer
或者通过使用外部工具的方法中的QtDesinger打开


点击创建就建立一个窗口

通过拖动左侧的widhet box下的控件为窗口添加内容,点击保存可以将内容保存为.ui的文件
3.2转换UI文件为Python代码
将设计好的.ui文件转换为Python代码:
bash
pyuic5 input.ui -o output.py
或者右击ui文件使用外部工具PyUIC转化

4. 常用控件详解
控件名称 | 类名 | 功能描述 | 常用方法/信号 |
---|---|---|---|
标签 | QLabel | 显示文本或图像 | setText(), setPixmap() |
按钮 | QPushButton | 触发操作 | clicked信号 |
单行文本框 | QLineEdit | 输入单行文本 | text(), textChanged信号 |
多行文本框 | QTextEdit | 输入和显示多行文本 | toPlainText(), setText() |
复选框 | QCheckBox | 多选选项 | isChecked(), stateChanged信号 |
单选按钮 | QRadioButton | 单选选项(需分组) | 使用QButtonGroup管理 |
下拉框 | QComboBox | 下拉选择 | addItem(), currentTextChanged信号 |
滑块 | QSlider | 通过滑动选择数值 | setRange(), valueChanged信号 |
控件使用示例
python
import sys
from PyQt5.QtWidgets import (QApplication, QWidget, QVBoxLayout,
QHBoxLayout, QLabel, QPushButton,
QLineEdit, QCheckBox)
class Example(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
vbox = QVBoxLayout()
# 用户名输入区域
label = QLabel('用户名:')
self.input = QLineEdit()
hbox1 = QHBoxLayout()
hbox1.addWidget(label)
hbox1.addWidget(self.input)
# 复选框
self.checkbox = QCheckBox('记住我')
# 按钮
btn = QPushButton('确定')
btn.clicked.connect(self.onButtonClick)
# 添加所有控件
vbox.addLayout(hbox1)
vbox.addWidget(self.checkbox)
vbox.addWidget(btn)
self.setLayout(vbox)
self.setWindowTitle('控件示例')
self.resize(300, 150)
def onButtonClick(self):
username = self.input.text()
remember = self.checkbox.isChecked()
print(f'用户名: {username}, 记住我: {remember}')
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = Example()
ex.show()
sys.exit(app.exec_())