当前位置: 首页 > news >正文

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

在这里插入图片描述

✅作者简介: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.jsqmd.com/news/278355/

相关文章:

  • 揭秘Python OpenCV实时画面处理:3步构建高性能摄像头应用
  • 未来展望:AI与人类协作的终极愿景——软件测试从业者的专业视角
  • 20260121人工智能作业v1
  • 【Python自动化办公终极指南】:3步实现多个Word文档高效合并
  • 智能网联汽车测试工具领衔,AI与云计算标准重塑测试行业格局
  • 2026必备!MBA论文写作TOP10 AI工具测评
  • 2026 APF有源滤波器厂家推荐:四大品牌综合实力测评与选型指南
  • 2026 年 1 月铝镁锰瓦厂家推荐排行榜:直立锁边/仿古/氟碳/金属板瓦,涵盖0.8mm至1.1mm及多种型号的铝镁锰合金屋面瓦实力甄选
  • Python异步编程十大最佳实践(附真实项目案例):让你的代码效率飙升
  • 2026企业战略指南原圈科技AI市场分析指南赢在2026的企业竞争实操
  • Kubernetes集群节点扩容实战
  • 2026年最被低估的岗位:AI测试策略师,你准备好了吗?
  • 别再混淆了!merge与concat究竟有何不同,一文让你豁然开朗
  • 2026 AI MARKET ANALYSIS原圈科技AI市场分析终极榜单不懂AI竞品分析将落后!
  • Python并发陷阱曝光:5种典型业务场景下线程与进程的正确打开方式
  • 全球市场调研:2026年旋转蒸发仪十大品牌排行榜及优质供应商推荐
  • 福州研究生留学机构top10揭秘!申请成功率高背后真相解析
  • linux audit入门使用
  • 震惊故事:AI项目失败,我学到了什么?
  • 从IP封禁到行为检测:揭秘现代反爬虫体系及应对方案
  • LeetCode 3314.构造最小位运算数组 I:今日先简单题简单做-到II再优化
  • 从同步到异步的华丽转身:手把手教你重构代码实现百万级并发处理
  • 如何用Python在10分钟内成功调用Deepseek API?工程师都在偷偷看的教程
  • 高速高频阻抗匹配:差分信号PCB设计与协同优化
  • Python OpenCV处理摄像头实时画面(从入门到实战的完整指南)
  • 济南硕士留学中介top10全面对比,无隐形消费保障详解指南
  • 安全生产管理究竟应该管什么?
  • 好写作AI:48小时极限肝论文?你的“学术急救包”已送达!
  • Python虚拟环境终极教程:从零开始学会venv的6大核心命令
  • 高频阻抗匹配仿真与实测验证的完整流程