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.js2 小时前
缺失数据可视化图表开发实战|Highcharts创建人员出生统计面积图表示例
开发语言·前端·javascript·信息可视化·highcharts·图表开发
测试员周周6 小时前
【Appium 系列】第16节-WebView-H5上下文切换 — 混合应用的自动化难点
运维·开发语言·人工智能·功能测试·appium·自动化·测试用例
测试19986 小时前
软件测试 - 单元测试总结
自动化测试·软件测试·python·测试工具·职场和发展·单元测试·测试用例
曲幽9 小时前
我用了FastApiAdmin后,连夜把踩过的坑都整理出来了
redis·python·postgresql·vue3·fastapi·web·sqlalchemy·admin·fastapiadmin
杜子不疼.9 小时前
【C++ AI 大模型接入 SDK】 - DeepSeek 模型接入(上)
开发语言·c++·chatgpt
加号39 小时前
【C#】 串口通信技术深度解析及实现
开发语言·c#
sycmancia10 小时前
Qt——编辑交互功能的实现
开发语言·qt
石山代码10 小时前
C++ 内存分区 堆区
java·开发语言·c++
前端若水10 小时前
会话管理:创建、切换、删除对话历史
前端·人工智能·python·react.js
无风听海10 小时前
C# 隐式转换深度解析
java·开发语言·c#