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_())

相关推荐
HalvmånEver3 小时前
Linux的第二章 : 基础的指令(二)
linux·运维·服务器·开发语言·学习
egoist20233 小时前
[linux仓库]线程同步与生产者消费者模型[线程·陆]
linux·c语言·开发语言·线程同步·阻塞队列·生产者消费者模型
资深web全栈开发5 小时前
[特殊字符]图解 Golang 反射机制:从底层原理看动态类型的秘密
开发语言·后端·golang
CAE3205 小时前
基于机器学习的智能垃圾短信检测超强系统
人工智能·python·机器学习·自然语言处理·垃圾短信拦截
MarcoPage6 小时前
Python 字典推导式入门:一行构建键值对映射
java·linux·python
独隅9 小时前
在 Lua 中,你可以使用 `os.date()` 函数轻松地将时间戳转换为格式化的时间字符串
开发语言·lua
思麟呀10 小时前
Linux的基础IO流
linux·运维·服务器·开发语言·c++
星释10 小时前
Rust 练习册 :Pythagorean Triplet与数学算法
开发语言·算法·rust
星释10 小时前
Rust 练习册 :Nth Prime与素数算法
开发语言·算法·rust
lkbhua莱克瓦2411 小时前
Java基础——集合进阶3
java·开发语言·笔记