完整教程:Qt Designer 和 PyQt 开发教程

news/2026/1/21 11:31:18/文章来源:https://www.cnblogs.com/gccbuaa/p/19510702

在这里插入图片描述

✅作者简介:2022年博客新星 第八。热爱国学的Java后端开发者,修心和技术同步精进。
个人主页:Java Fans的博客
个人信条:不迁怒,不贰过。小知识,大智慧。
当前专栏:Python案例分享专栏
✨特色专栏:国学周更-心性养成之路
本文内容:Qt Designer 和 PyQt 开发教程

文章目录

    • 一、环境安装
      • 1. 确认 Python 已安装
      • 2. 确认 pip 已安装
      • 2. 安装 PyQt5
      • 3. 启动 Qt Designer
    • 二、Qt Designer 基础
      • 1. Qt Designer 介绍
      • 2. 常用控件
      • 3. 设计界面步骤
    • 三、PyQt5 使用 Qt Designer 设计的界面
      • 1. 将 `.ui` 文件转换为 Python 代码
      • 2. 直接加载 `.ui` 文件(推荐)
    • 四、PyQt5 基础示例
      • 1. 简单窗口示例
    • 五、信号与槽机制(Signal & Slot)
      • 1. 什么是信号与槽?
      • 2. 连接信号与槽
      • 3. 自定义信号
    • 六、布局管理
      • 1. 为什么需要布局?
      • 2. 常用布局
      • 3. 布局示例
    • 七、常用控件事件处理
      • 1. QPushButton 点击事件
      • 2. QLineEdit 文本变化事件
      • 3. QComboBox 选择变化事件
    • 八、使用 Qt Designer 设计复杂界面示例
      • 1. 直接加载 UI 文件
      • 2. 通过 pyuic5 转换 UI 文件
    • 九、进阶技巧
      • 1. 多线程与界面响应
      • 2. 样式表(QSS)
      • 3. 国际化支持
    • 总结

在这里插入图片描述

一、环境安装

好的!我来详细讲解在命令行(Windows CMD、PowerShell、Linux 终端或 macOS 终端)中安装 Python 相关库的全过程,包括环境准备、常用命令、常见问题及解决方案。

1. 确认 Python 已安装

打开命令行,输入:

python --version

python3 --version

如果显示版本号(如 Python 3.10.4),说明已安装。

如果提示“命令未找到”,需要先安装 Python,并且确保安装时勾选了“Add Python to PATH”(添加到环境变量)。

2. 确认 pip 已安装

pip 是 Python 的包管理工具,Python 3.4+ 默认自带。

检查 pip 版本:

pip --version

pip3 --version

如果提示未找到命令,可以尝试:

python -m ensurepip --default-pip

或重新安装 Python。

2. 安装 PyQt5

PyQt5 是 Python 绑定的 Qt 库,支持使用 Qt Designer 设计界面后进行开发。

打开命令行,执行:

pip install PyQt5 PyQt5-tools
  • PyQt5 是核心库
  • PyQt5-tools 包含 Qt Designer 等工具

3. 启动 Qt Designer

安装完成后,Qt Designer 可执行文件通常在:

  • Windows: Python安装目录\Lib\site-packages\pyqt5_tools\Qt\bin\designer.exe
  • 也可以直接在命令行输入:
designer

如果命令无效,可以手动找到路径启动。

以上操作均无找到时,使用以下方式在命令行输入:

pip install -i http://pypi.doubanio.com/simple/ PySide6 --trusted-host pypi.doubanio.com
Looking in indexes: http://pypi.doubanio.com/simple/

二、Qt Designer 基础

1. Qt Designer 介绍

Qt Designer 是一个可视化界面设计工具,支持拖拽控件,快速搭建界面。

2. 常用控件

  • QPushButton:按钮
  • QLabel:标签
  • QLineEdit:单行文本输入框
  • QTextEdit:多行文本输入框
  • QComboBox:下拉框
  • QCheckBox:复选框
  • QRadioButton:单选按钮
  • QWidget:窗口基类

3. 设计界面步骤

  1. 新建一个 Widget 或 MainWindow 窗口
  2. 拖拽控件到窗口
  3. 设置控件属性(右侧属性编辑器)
  4. 保存为 .ui 文件,比如 mainwindow.ui

三、PyQt5 使用 Qt Designer 设计的界面

1. 将 .ui 文件转换为 Python 代码

使用 pyuic5 工具将 .ui 文件转换为 .py 文件:

pyuic5 -o mainwindow.py mainwindow.ui
  • mainwindow.ui 是设计好的界面文件
  • mainwindow.py 是生成的 Python 界面代码

2. 直接加载 .ui 文件(推荐)

也可以直接在代码中加载 .ui 文件,避免转换步骤:

from PyQt5 import uic
from PyQt5.QtWidgets import QApplication, QMainWindow
import sys
class MyWindow(QMainWindow):
def __init__(self):
super().__init__()
uic.loadUi('mainwindow.ui', self)  # 加载UI文件
if __name__ == '__main__':
app = QApplication(sys.argv)
window = MyWindow()
window.show()
sys.exit(app.exec_())

四、PyQt5 基础示例

1. 简单窗口示例

import sys
from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QLabel, QVBoxLayout
class MyWindow(QWidget):
def __init__(self):
super().__init__()
self.setWindowTitle('PyQt5 简单示例')
self.resize(300, 200)
self.label = QLabel('Hello, PyQt5!', self)
self.button = QPushButton('点击我', self)
self.button.clicked.connect(self.on_button_click)
layout = QVBoxLayout()
layout.addWidget(self.label)
layout.addWidget(self.button)
self.setLayout(layout)
def on_button_click(self):
self.label.setText('按钮被点击了!')
if __name__ == '__main__':
app = QApplication(sys.argv)
window = MyWindow()
window.show()
sys.exit(app.exec_())

五、信号与槽机制(Signal & Slot)

1. 什么是信号与槽?

PyQt5 通过信号与槽机制实现控件间的通信和事件处理。

2. 连接信号与槽

示例:

self.button.clicked.connect(self.on_button_click)
  • clicked 是 QPushButton 的信号
  • on_button_click 是槽函数

3. 自定义信号

可以在自定义类中定义信号:

from PyQt5.QtCore import pyqtSignal, QObject
class MyObject(QObject):
my_signal = pyqtSignal(str)  # 定义带参数的信号
def do_something(self):
self.my_signal.emit('Hello from signal!')

然后连接:

obj = MyObject()
obj.my_signal.connect(lambda msg: print(msg))
obj.do_something()

六、布局管理

1. 为什么需要布局?

布局管理器自动调整控件大小和位置,适应窗口大小变化,避免控件重叠或空白。

2. 常用布局

  • QHBoxLayout:水平布局
  • QVBoxLayout:垂直布局
  • QGridLayout:网格布局
  • QFormLayout:表单布局(标签+控件)

3. 布局示例

layout = QVBoxLayout()
layout.addWidget(self.label)
layout.addWidget(self.button)
self.setLayout(layout)

七、常用控件事件处理

1. QPushButton 点击事件

self.button.clicked.connect(self.handle_click)

2. QLineEdit 文本变化事件

self.line_edit.textChanged.connect(self.on_text_changed)

3. QComboBox 选择变化事件

self.combo_box.currentIndexChanged.connect(self.on_index_changed)

八、使用 Qt Designer 设计复杂界面示例

假设设计了一个包含 QLabel、QLineEdit、QPushButton 的界面,保存为 form.ui

1. 直接加载 UI 文件

from PyQt5 import uic
from PyQt5.QtWidgets import QApplication, QMainWindow
import sys
class Form(QMainWindow):
def __init__(self):
super().__init__()
uic.loadUi('form.ui', self)
# 假设控件对象名为 lineEdit, pushButton, label
self.pushButton.clicked.connect(self.on_button_click)
def on_button_click(self):
text = self.lineEdit.text()
self.label.setText(f'你输入了:{text}')
if __name__ == '__main__':
app = QApplication(sys.argv)
form = Form()
form.show()
sys.exit(app.exec_())

2. 通过 pyuic5 转换 UI 文件

pyuic5 -o form_ui.py form.ui

然后在代码中导入:

from PyQt5.QtWidgets import QMainWindow, QApplication
import sys
from form_ui import Ui_MainWindow  # 生成的类名可能不同,需确认
class Form(QMainWindow, Ui_MainWindow):
def __init__(self):
super().__init__()
self.setupUi(self)
self.pushButton.clicked.connect(self.on_button_click)
def on_button_click(self):
text = self.lineEdit.text()
self.label.setText(f'你输入了:{text}')
if __name__ == '__main__':
app = QApplication(sys.argv)
form = Form()
form.show()
sys.exit(app.exec_())

九、进阶技巧

1. 多线程与界面响应

PyQt5 支持多线程,避免界面卡顿。可以使用 QThread 或 Python 标准库的 threading

2. 样式表(QSS)

通过样式表美化界面,类似 CSS:

self.setStyleSheet("QPushButton {background-color: lightblue; font-size: 16px;}")

3. 国际化支持

Qt 支持多语言,结合 .ts 文件和 lupdate 工具实现。


总结


  码文不易,本篇文章就介绍到这里,如果想要学习更多Java系列知识点击关注博主,博主带你零基础学习Java知识。与此同时,对于日常生活有困扰的朋友,欢迎阅读我的第四栏目:《国学周更—心性养成之路》,学习技术的同时,我们也注重了心性的养成。

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1194218.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

未来展望:AI与人类协作的终极愿景——软件测试从业者的专业视角

AI时代下软件测试的转型契机 在2026年的今天,人工智能(AI)已深度融入软件测试领域,从自动化脚本生成到智能缺陷预测,AI工具如Testim、Selenium AI扩展和Applittools正重塑测试流程。然而,这仅仅是起点。终…

20260121人工智能作业v1

文章目录一、原操作逐步骤深度详解1. 创建用户组 dev_team核心详解:2. 创建用户 alice,指定主组为 dev_team核心详解:3. 创建用户 bob,指定主组为 dev_team核心详解:4. 创建 /opt/project 目录核心详解:5. …

【Python自动化办公终极指南】:3步实现多个Word文档高效合并

第一章:Python自动化办公合并多个Word文档概述在现代办公环境中,处理大量 Word 文档是常见需求,尤其是需要将多个文档内容整合为一个统一文件的场景。手动复制粘贴不仅效率低下,还容易出错。Python 提供了强大的自动化能力&#x…

2026必备!MBA论文写作TOP10 AI工具测评

2026必备!MBA论文写作TOP10 AI工具测评 2026年MBA论文写作AI工具测评:为何需要这份榜单? 随着人工智能技术的持续发展,MBA学生在论文写作过程中对高效、专业工具的需求日益增长。从选题构思到文献综述,再到数据整理与格…

智能网联汽车测试工具领衔,AI与云计算标准重塑测试行业格局

在2026年初的科技浪潮中,测试工具领域迎来重大突破。近日,一场聚焦“智能网联汽车信息安全与软件升级”的测试工具发布会在上海隆重举行,由工业和信息化部批复成立的智能网联汽车软件检测中心主办。此次发布会不仅公布了GB44495-2024《汽车整…

2026 APF有源滤波器厂家推荐:四大品牌综合实力测评与选型指南

2026 APF有源滤波器行业背景与测评说明 2026年APF有源滤波器行业发展白皮书显示,随着新能源光伏/风电、工业4.0智能工厂及轨道交通的快速普及,非线性负载(如逆变器、电弧炉、VVVF变频器)引发的谐波超标、无功损耗问…

2026 年 1 月铝镁锰瓦厂家推荐排行榜:直立锁边/仿古/氟碳/金属板瓦,涵盖0.8mm至1.1mm及多种型号的铝镁锰合金屋面瓦实力甄选

2026年铝镁锰瓦行业深度解析与实力厂家甄选指南 随着现代建筑对功能性、美观性与可持续性要求的不断提升,金属屋面系统,特别是以铝镁锰合金为核心的屋面材料,正成为大型公共建筑、商业综合体及高端住宅项目的首选。…

Python异步编程十大最佳实践(附真实项目案例):让你的代码效率飙升

第一章:Python异步编程 async await 详解在现代高并发应用开发中,Python 的异步编程模型通过 async 和 await 关键字提供了高效的非阻塞 I/O 操作支持。该机制基于事件循环,允许程序在等待耗时操作(如网络请求、文件读写&#xff…

2026企业战略指南原圈科技AI市场分析指南赢在2026的企业竞争实操

原圈科技AI市场分析指南,旨在帮助企业应对2026年商业挑战。本文将通过三步教程,详解如何构建全域信息采集网络与多维度智能分析系统,并驱动自动化营销策略生成,将AI洞察转化为持续市场优势,实现从降本增效到战略引领的…

Kubernetes集群节点扩容实战

Kubernetes集群节点扩容实战 1.1 部署目标 在Kubernetes集群中添加node节点及master节点 1.2 初始集群架构 参考基于kubeasz的k8s v1.34.x高可用集群部署部署一个单master,单Node的k8s集群节点类型 数量 功能 IPmaste…

2026年最被低估的岗位:AI测试策略师,你准备好了吗?

行业裂变中的价值重构 2026年软件测试领域正经历颠覆性变革。ISTQB白皮书显示传统自动化脚本岗位需求同比下降52%,而AI测试策略师岗位年增长率达120%。这种断层式增长背后,是AI系统复杂度指数级提升带来的质量保障范式转移——测试正从“执行验证”转向…

2026 AI MARKET ANALYSIS原圈科技AI市场分析终极榜单不懂AI竞品分析将落后!

原圈科技在AI市场分析领域表现突出,其智慧营销智能体矩阵被视为高净值行业的"AI营销大脑"。本文将为你揭晓2026年AI市场分析平台TOP榜单,并深入探讨原圈科技如何凭借在数据深度、运营闭环和私域安全方面的绝对优势,帮助企业实现智能…

Python并发陷阱曝光:5种典型业务场景下线程与进程的正确打开方式

第一章:Python并发编程的现状与挑战 Python 作为一门强调可读性与开发效率的语言,在 Web 服务、数据处理和自动化脚本等场景中广泛使用。然而,其全局解释器锁(GIL)机制使得多线程无法真正并行执行 CPU 密集型任务&…

别再混淆了!merge与concat究竟有何不同,一文让你豁然开朗

第一章:别再混淆了!merge与concat究竟有何不同,一文让你豁然开朗在数据处理中,merge 与 concat 是两个高频操作,但它们的用途和行为截然不同。理解二者差异,是高效使用 pandas 的关键。核心功能对比 concat…

全球市场调研:2026年旋转蒸发仪十大品牌排行榜及优质供应商推荐

一、行业背景与全球市场调研据中国报告大厅《2026-2031 年全球及中国旋转蒸发仪行业市场分析报告》显示,2026 年全球旋转蒸发仪市场规模已达 78.3 亿元,年复合增长率保持 8.6% 的高速增长,预计 2029 年将突破 90.55…

福州研究生留学机构top10揭秘!申请成功率高背后真相解析

福州研究生留学机构top10揭秘!申请成功率高背后真相解析一、福州研究生如何选择留学中介?信息不对称与成功率焦虑如何破解?作为从业八年的华南地区国际教育规划导师,笔者在日常咨询中接触到大量来自福州高校的学子…

linux audit入门使用

文章目录前言一、安装Audit?二、理解工作流程与核心工具三、核心使用(三大工具)1. auditctl:实时控制审计规则2. ausearch:查询审计日志3. aureport:生成汇总报告四、规则持久化(关键步骤&#…

震惊故事:AI项目失败,我学到了什么?

作为一名资深软件测试工程师,我曾参与一个雄心勃勃的AI项目——一个医疗诊断系统,旨在通过图像识别技术自动检测癌症早期迹象。项目团队包括开发、数据科学和测试人员,我被任命为测试负责人。起初,我们信心满满:系统基…

从IP封禁到行为检测:揭秘现代反爬虫体系及应对方案

第一章:从IP封禁到行为检测:反爬虫技术演进全景随着网络数据价值的不断提升,网站对自动化爬取行为的防御手段也在持续升级。早期的反爬虫策略主要依赖简单的IP封禁机制,即当某一IP在短时间内发起大量请求时,服务器将其…

LeetCode 3314.构造最小位运算数组 I:今日先简单题简单做-到II再优化

【LetMeFly】3314.构造最小位运算数组 I:今日先简单题简单做-到II再优化 力扣题目链接:https://leetcode.cn/problems/construct-the-minimum-bitwise-array-i/ 给你一个长度为 n 的质数数组 nums 。你的任务是返回一个长度为 n 的数组 ans &#xff0…