Python图形化界面——pyqt5教程

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应用的基本结构包含三个主要部分:

  1. QApplication:管理应用程序的控制流和主要设置(每个应用只需一个实例)
  2. 窗口部件:所有用户界面元素的基类,如按钮、标签等
  3. 事件循环 :通过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_())

相关推荐
Highcharts.js1 天前
教程:基于 React + Highcharts 构建一个单页应用程序、按需数据拉取与图表渲染
开发语言·前端·数据结构·react.js·前端框架·highcharts·页面应用
爱昏羔1 天前
下篇:从检索到交互 — 物流RAG问答系统与WebUI全实现
python·langchain·agent
_Jimmy_1 天前
Agent引用数据库知识过时的增量同步方案
人工智能·python·langchain
头发还在的女程序员1 天前
医院陪诊管理系统怎么选择?——2026 年选型避坑与架构参考
java·开发语言·陪诊系统·陪诊app·医院陪诊陪护
min(a,b)1 天前
学习第 4 天:面向对象与异常处理
python·学习·学习方法
爱写代码的小朋友1 天前
从零开始学 Win32 API:C++ 窗口编程实战(VS Code + MinGW-w64 命令行详解)
开发语言·c++
yangshicong1 天前
第19章:AI安全防护与AI安全
人工智能·python·安全·prompt·ai编程
果汁华1 天前
Function Calling 与 Python 实战完整指南
开发语言·网络·python
c_lb72881 天前
2026年不同基础做量化,先找AI能参与的位置
人工智能·python
小小晓.1 天前
C++:语句和作用域
开发语言·c++