PyQt5 登录界面开发全流程:从环境配置到可视化设计

张开发
2026/4/16 20:38:34 15 分钟阅读

分享文章

PyQt5 登录界面开发全流程:从环境配置到可视化设计
在 Python 桌面应用开发中PyQt5 是最主流的 GUI 框架之一它结合了 Qt 的强大功能与 Python 的简洁语法能快速实现可视化界面开发。本文将以登录窗口为例带你从零完成环境搭建、PyCharm 工具配置、Qt Designer 可视化设计、UI 转码到业务逻辑绑定的完整流程新手也能直接上手。一、环境准备安装 PyQt5 与工具包首先需要安装 PyQt5 核心库和配套工具pyqt5-tools包含 Qt Designer、pyuic5 等可视化工具为了加速安装推荐使用清华镜像源# 安装PyQt5核心库 pip install PyQt5 -i https://pypi.tuna.tsinghua.edu.cn/simple # 安装PyQt5工具包包含Qt Designer、pyuic5等 pip install pyqt5-tools -i https://pypi.tuna.tsinghua.edu.cn/simple --trusted-host pypi.tuna.tsinghua.edu.cn说明--trusted-host参数用于解决镜像源的 SSL 验证问题避免安装失败。二、PyCharm 配置外部工具集成 Qt Designer 与 PyUIC为了在 PyCharm 中直接调用 Qt Designer 设计界面、一键将.ui文件转为 Python 代码需要配置两个外部工具1. 配置 Qt Designer1. 打开 PyCharm依次点击 文件 → 设置 → 工具 → 外部工具点击左上角「」号添加工具2. 填写配置信息◦ 名称QtDesigner自定义方便识别即可◦ 程序选择 Qt Designer 的可执行文件路径通常在 Python 安装目录下的site-packages\qt5_applications\Qt\bin\designer.exe示例路径D:\Python\Python311\Lib\site-packages\qt5_applications\Qt\bin\designer.exe◦ 工作目录填写$FileDir$表示当前项目文件所在目录3. 点击「确定」完成配置2. 配置 PyUICUI 转 Python 工具1. 再次点击「」号添加第二个工具2. 填写配置信息◦ 名称PyUIC◦ 程序选择 Python 解释器路径示例D:\Python\Python311\python.exe◦ 实参-m PyQt5.uic.pyuic $FileName$ -o $FileNameWithoutExtension$.py◦ 工作目录填写$FileDir$3. 点击「确定」完成配置配置完成后在 PyCharm 中右键项目文件就能在External Tools菜单中看到QtDesigner和PyUIC直接调用即可。三、Qt Designer 可视化设计登录界面Qt Designer 是 Qt 的可视化界面设计工具通过拖拽控件就能快速生成界面无需手动编写大量 UI 代码。1. 新建主窗口• 在 PyCharm 中右键项目 → External Tools → QtDesigner 打开工具• 在弹出的「新建窗体」中选择Main Window点击「创建」生成一个空白主窗口2. 拖拽控件搭建登录界面从左侧Widget Box中拖拽所需控件到窗口完成布局• Label 标签2 个分别用于显示「账号」「密码」• Line Edit 输入框2 个分别用于输入账号、密码• Push Button 按钮2 个分别用于「登录」「注册」功能• 调整控件位置、大小让界面布局美观3. 美化界面修改样式与字体• 右键控件 → 选择「改变样式表」可以自定义控件的字体、颜色、背景等样式• 点击「添加字体」选择合适的字体如 Agency FB、字号让界面更美观• 也可以直接编写 QSS 样式表实现更复杂的美化效果4. 保存 UI 文件设计完成后点击左上角「保存」按钮将文件保存为win1.ui放在项目目录下。四、UI 转 Python 代码生成 win1.py设计好的.ui文件无法直接在 Python 中运行需要通过 PyUIC 工具将其转换为 Python 代码1. 在 PyCharm 中右键win1.ui文件 → External Tools → PyUIC2. 工具会自动在同目录下生成win1.py文件3. 生成的代码结构如下核心部分# -*- coding: utf-8 -*- # Form implementation generated from reading ui file win1.ui # # Created by: PyQt5 UI code generator 5.15.9 # # WARNING: Any manual changes made to this file will be lost when pyuic5 is # run again. Do not edit this file unless you know what you are doing. from PyQt5 import QtCore, QtGui, QtWidgets class Ui_MainWindow(object): def setupUi(self, MainWindow): MainWindow.setObjectName(MainWindow) MainWindow.resize(1129, 857) font QtGui.QFont() font.setFamily(Agency FB) font.setPointSize(14) font.setBold(True) font.setWeight(75) MainWindow.setFont(font) self.centralwidget QtWidgets.QWidget(MainWindow) self.centralwidget.setObjectName(centralwidget) self.pushButton QtWidgets.QPushButton(self.centralwidget) self.pushButton.setGeometry(QtCore.QRect(340, 390, 121, 61)) self.pushButton.setObjectName(pushButton) self.lineEdit QtWidgets.QLineEdit(self.centralwidget) self.lineEdit.setGeometry(QtCore.QRect(452, 140, 161, 41)) font QtGui.QFont() font.setFamily(Arial) font.setPointSize(14) font.setBold(False) font.setWeight(50) self.lineEdit.setFont(font) self.lineEdit.setObjectName(lineEdit) self.lineEdit_2 QtWidgets.QLineEdit(self.centralwidget) self.lineEdit_2.setGeometry(QtCore.QRect(450, 260, 161, 41)) font QtGui.QFont() font.setFamily(Arial) font.setPointSize(14) font.setBold(False) font.setWeight(50) self.lineEdit_2.setFont(font) self.lineEdit_2.setObjectName(lineEdit_2) self.label QtWidgets.QLabel(self.centralwidget) self.label.setGeometry(QtCore.QRect(350, 140, 81, 41)) self.label.setObjectName(label) self.label_2 QtWidgets.QLabel(self.centralwidget) self.label_2.setGeometry(QtCore.QRect(350, 260, 81, 31)) self.label_2.setObjectName(label_2) self.pushButton_2 QtWidgets.QPushButton(self.centralwidget) self.pushButton_2.setGeometry(QtCore.QRect(500, 390, 121, 61)) self.pushButton_2.setObjectName(pushButton_2) MainWindow.setCentralWidget(self.centralwidget) self.menubar QtWidgets.QMenuBar(MainWindow) self.menubar.setGeometry(QtCore.QRect(0, 0, 1129, 34)) self.menubar.setObjectName(menubar) MainWindow.setMenuBar(self.menubar) self.statusbar QtWidgets.QStatusBar(MainWindow) self.statusbar.setObjectName(statusbar) MainWindow.setStatusBar(self.statusbar) self.retranslateUi(MainWindow) QtCore.QMetaObject.connectSlotsByName(MainWindow) def retranslateUi(self, MainWindow): _translate QtCore.QCoreApplication.translate MainWindow.setWindowTitle(_translate(MainWindow, MainWindow)) self.pushButton.setText(_translate(MainWindow, 登录)) self.lineEdit.setText(_translate(MainWindow, 123456)) self.lineEdit_2.setText(_translate(MainWindow, 123456)) self.label.setText(_translate(MainWindow, htmlhead/bodyp align\center\span style\ font-size:18pt;\账号/span/p/body/html)) self.label_2.setText(_translate(MainWindow, htmlhead/bodyp align\center\span style\ font-size:18pt;\密码/span/p/body/html)) self.pushButton_2.setText(_translate(MainWindow, 注册))重要提醒不要手动修改**win1.py**文件后续如果修改了 UI 设计重新执行 PyUIC 转换会覆盖文件手动修改会丢失。五、业务逻辑绑定实现登录功能UI 代码仅负责界面展示需要新建一个主程序文件继承 UI 类并绑定业务逻辑实现账号密码验证功能。1. 新建主程序文件Template.pyfrom PyQt5 import QtCore, QtGui, QtWidgets # 导入PyQt5的主要模块 from PyQt5.QtCore import * # 导入QtCore模块的所有内容用于核心功能 from PyQt5.QtGui import * # 导入QtGui模块的所有内容用于图形功能 from PyQt5.QtWidgets import QFileDialog, QMainWindow, QMessageBox # 导入QtWidgets模块中的一些特定类 QFileDialog可以帮助用户选择文件路径 QMainWindow则是创建具有菜单、工具栏和状态栏的主窗口的起点。 QMessageBox可以用于向用户显示提示或警告信息 from win1 import Ui_MainWindow # 导入UI类这个类包含了你的主窗口设计 import sys # 导入系统模块用于访问命令行参数和系统相关功能 class PyQtMainEntry(QMainWindow, Ui_MainWindow): # 定义一个继承自QMainWindow和Ui_MainWindow的类 def __init__(self): # 构造函数 super().__init__() # 调用基类的构造函数进行初始化 self.setupUi(self) # 调用setupUi方法根据Ui_MainWindow设计设置界面 # 参数初始化 定义要触发的函数 # 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_()) # 进入事件循环并确保在退出时清理2. 运行程序直接运行Template.py就能弹出登录窗口六、常见问题与优化1. 常见问题• Qt Designer 路径错误如果配置后无法打开检查designer.exe路径是否正确可通过pip show pyqt5-tools查看安装目录• PyUIC 转换失败检查 Python 解释器路径是否正确确保 PyQt5 安装成功• 密码明文显示给密码输入框添加self.lineEdit_pwd.setEchoMode(QtWidgets.QLineEdit.Password)实现密码隐藏2. 界面优化• 布局管理使用 Qt 的布局管理器垂直布局、水平布局让界面自适应窗口大小• QSS 美化编写全局 QSS 样式表统一界面风格添加圆角、阴影等效果• 功能扩展对接数据库实现真实账号验证、添加记住密码、忘记密码等功能七、总结本文完整演示了 PyQt5 登录界面的开发流程从环境安装、工具配置到可视化设计、UI 转码再到业务逻辑绑定覆盖了 PyQt5 桌面开发的核心流程。这种「UI 与逻辑分离」的开发模式既能通过可视化工具快速搭建界面又能灵活编写业务代码大幅提升开发效率非常适合 Python 桌面应用开发。

更多文章