PyQt5 入门指南:环境搭建、PyCharm 外部工具配置与登录界面实战

本文结合 PyQt5 的基础项目结构,详细介绍 PyQt5 的环境安装、PyCharm 中 Qt Designer 与 PyUIC 外部工具的配置,以及如何将 .ui 文件结合逻辑代码运行起来。适合刚接触 PyQt5 的开发者参考。


一、环境准备:安装 PyQt5

在开始之前,需要确保你的 Python 环境已经就绪(推荐 Python 3.7+)。打开命令行或 PyCharm 的 Terminal,执行以下安装命令:

python 复制代码
pip install pyqt5
pip install pyqt5-tools

说明:

  • pyqt5 是核心库,提供 GUI 组件。
  • pyqt5-tools 包含 Qt Designer 等可视化设计工具(部分版本可能自带,但建议一并安装)。

安装完成后,可以通过以下命令验证是否成功:

python 复制代码
python -c "from PyQt5.QtWidgets import QApplication; print('PyQt5 安装成功')"

二、配置 PyCharm 外部工具(Qt Designer 与 PyUIC)

为了在 PyCharm 中直接通过右键调用 Qt Designer 和 PyUIC,需要配置外部工具。配置完成后,就能出现你图片中的 Qt Designer 和 PyUIC 菜单。

1. 打开外部工具配置

在 PyCharm 中依次点击: File -> Settings -> Tools -> External Tools -> 点击 + 号添加。

2. 配置 Qt Designer

  • Name: Qt Designer
  • Program: 指向你的 designer.exe 路径(通常在 Python 安装目录下的 Lib\site-packages\qt5_applications\Qt\bin\designer.exe 或 Lib\site-packages\PyQt5\Qt\bin\designer.exe)。
  • Working directory: $FileDir$

3. 配置 PyUIC

  • Name: PyUIC
  • Program: 指向你的 python.exe 路径(推荐使用当前项目虚拟环境的 Python)。
  • Arguments: $FileName$ -o $FileNameWithoutExtension$.py
  • Working directory: $FileDir$

注意: $FileName$ 表示当前选中的 .ui 文件,$FileNameWithoutExtension$ 表示去掉后缀的文件名。执行后会在同目录下生成对应的 .py 文件。

配置完成后,在项目文件上右键,选择 External Tools,就能看到 Qt Designer 和 PyUIC,和你图片中的一致。


三、项目文件结构

本文涉及三个核心文件,结构如下:

python 复制代码
project/
├── Template.py      # 主程序入口,负责逻辑控制
├── win1.ui          # Qt Designer 设计的界面文件
└── win1.py          # 由 win1.ui 通过 PyUIC 生成的 Python 代码
  • win1.ui:通过 Qt Designer 拖拽生成的界面布局文件(XML 格式)。
  • win1.py:由 PyUIC 自动生成,包含 Ui_MainWindow 类,不要手动修改。
  • Template.py:主入口,将界面与业务逻辑结合。

四、代码解析

1. 界面设计(win1.ui)

在 Qt Designer 中,我们设计了一个简单的登录界面:

  • 两个 QLabel:账号、密码。
  • 两个 QLineEdit:用于输入账号和密码(默认填充 12345)。
  • 两个 QPushButton:注册、登录。
  • 整体采用水平布局和垂直布局组合。

对应的 XML 结构虽然繁琐,但通过 PyUIC 一键就能转成 Python 代码。

2. 生成的界面代码(win1.py)

python 复制代码
class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        # 设置窗口大小、中央控件、布局、按钮、输入框、标签等
        ...
    def retranslateUi(self, MainWindow):
        # 设置文本内容,如按钮文字、标签文字
        ...

提示: 这个文件是自动生成的,每次修改 .ui 后重新运行 PyUIC 都会覆盖,所以不要在这里写业务逻辑。

3. 主程序入口(Template.py)

python 复制代码
from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import QFileDialog, QMainWindow, QMessageBox
from win1 import Ui_MainWindow
import sys

class PyQtMainEntry(QMainWindow, Ui_MainWindow):
    def __init__(self):
        super().__init__()
        self.setupUi(self)
        # 参数初始化

    '''定义要触发的函数'''
    # def predict_price(self):
    # def showbiao(self):
    # def slot1(self):
    #     print('金色传说')

if __name__ == "__main__":
    app = QtWidgets.QApplication(sys.argv)
    window = PyQtMainEntry()
    window.show()
    sys.exit(app.exec_())

代码说明:

  • PyQtMainEntry 同时继承了 QMainWindow 和 Ui_MainWindow,这样既拥有主窗口的特性,又能直接使用 Designer 设计的界面。
  • self.setupUi(self) 负责把界面搭建起来。
  • 下方注释掉的函数是预留的槽函数,比如点击"登录"按钮时触发的逻辑,可以在这里实现。
  • if __name__ == "__main__": 是标准入口,创建应用、显示窗口、进入事件循环。

五、运行与测试

  1. 用 Qt Designer 打开 win1.ui,确认界面无误后保存。
  2. 右键 win1.ui,选择 External Tools -> PyUIC,生成 win1.py。
  3. 运行 Template.py,即可看到登录窗口。
  4. 若想添加逻辑(例如点击"登录"弹出提示),可以在 Template.py 中绑定信号与槽:
python 复制代码
self.pushButton_2.clicked.connect(self.login)
def login(self):
    QMessageBox.information(self, "提示", "登录按钮被点击")

六、总结

本文从零开始,介绍了 PyQt5 的安装、PyCharm 外部工具的配置(Qt Designer 与 PyUIC),并结合实际项目文件讲解了 .ui、win1.py 和 Template.py 的关系。 核心流程可以概括为:

  1. 安装 pyqt5 和 pyqt5-tools。
  2. 在 PyCharm 配置 Qt Designer 和 PyUIC 外部工具。
  3. 用 Designer 设计界面,保存为 .ui。
  4. 用 PyUIC 将 .ui 转为 .py。
  5. 在 Template.py 中继承生成的 UI 类,编写业务逻辑。

掌握这套流程后,你就可以快速开发出带有图形界面的 Python 应用程序了。

相关推荐
看浪的路人1 小时前
第7讲:大模型后端服务化——Go 实现高并发 LLM Proxy / Router / Fallback
开发语言·后端·golang
iCxhust1 小时前
Matlab求解发电机的极限切除角
开发语言·算法·matlab·电力系统
zhanghaha13141 小时前
Qt 类完整例程【逐词拆解 + 逐步骤执行保姆教程】
开发语言·qt
code2cat2 小时前
Java进阶篇之AtomicReferenceFieldUpdater:用不可变快照替换整份状态
java·开发语言·cas
Nathan__272 小时前
PHP面试题——情景应用
开发语言·php
geats人山人海2 小时前
现代c++2.4 虚继承
java·开发语言·c++
我命由我123453 小时前
Android 广播 - 组件通信
android·java·开发语言·android studio·android jetpack·android-studio·android runtime
前端 贾公子3 小时前
LangGraph == 图的状态(State)管理 (中)
开发语言·数据库·python
李福春3 小时前
斗破Google ADK Java苍穹-第2境斗者-凝旋筑基-Java环境
java·开发语言·gemini·llmagent·深圳同盟·腾讯云架构师技术同盟·adk java