# pyside6 **Repository Path**: chenbool/pyside6 ## Basic Information - **Project Name**: pyside6 - **Description**: GUI开发里大名鼎鼎的Qt,C++开发,支持跨平台跨设备。对Python也有完善API支持,如果工作中有快速开发GUI的需求,然后正好后台服务是python的话,那PyQt就是绝配了。 PyQt目前已支持最新的Qt6,网上教程大多还是PyQt5,建议直接学习最新的PyQt6。 官方Qt的亲儿子是PySide,建议直接学习最新的PySide6(支持Qt6) - **Primary Language**: Python - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 2 - **Forks**: 1 - **Created**: 2022-07-20 - **Last Updated**: 2026-04-02 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # PySide6 学习示例项目 ## 项目介绍 本项目是一个 PySide6 学习示例集合,旨在帮助开发者快速掌握 PySide6 的各种 GUI 组件和功能。 ### 什么是 PySide6? PySide6 是 Qt for Python 的官方绑定库,由 Qt 公司维护。它是 Qt6 的 Python 版本,提供了完整的 Qt6 功能支持。 - **Qt**: GUI 开发领域大名鼎鼎的 C++ 框架,支持跨平台跨设备 - **PySide6**: Qt 官方推出的 Python 绑定(Qt 的"亲儿子") - **PyQt6**: 第三方提供的 Qt6 Python 绑定 **建议**: 直接学习最新的 PySide6(支持 Qt6),网上教程大多还是 PyQt5,建议跳过直接学习新版本。 ## 项目结构 ``` pyside6/ ├── app.py # 应用程序入口文件 ├── base.py # 基础窗口示例 ├── speak.py # 文本转语音功能示例 ├── layout/ # 布局管理示例 │ ├── horizontal.ui # 水平布局 UI 文件(Qt Designer 设计) │ └── ui_horizontal.py # 水平布局编译后的 Python 文件 ├── file/ # 文件操作示例 │ ├── base.py # 文件对话框使用示例 │ ├── file.py # 文件保存对话框示例 │ ├── file1.py # 文件拖拽示例(简化版) │ └── dfile.py # 文件拖拽示例(完整版) ├── list/ # 列表控件示例 │ ├── listWidget.py # QListWidget 使用示例 │ └── listView.py # QListView 使用示例 ├── table/ # 表格控件示例 │ └── base.py # QTableWidget 使用示例 └── README.md # 项目说明文件 ``` ## 模块功能详解 ### 1. 基础窗口 ([base.py](base.py)) 演示如何创建基本的 GUI 窗口,包含: - 标签(QLabel)和按钮(QPushButton)组件 - 垂直布局(QVBoxLayout)管理器 - 按钮点击事件处理机制 **运行**: `python base.py` ### 2. 文本转语音 ([speak.py](speak.py)) 演示如何使用 PySide6 的文本转语音功能,包含: - 文本输入框(QLineEdit) - 语音选择下拉框(QComboBox) - 音量控制滑块(QSlider) - QTextToSpeech 语音引擎使用 **运行**: `python speak.py` ### 3. 布局管理 ([layout/](layout/)) 演示如何使用 Qt 的布局管理器来组织界面组件: - **horizontal.ui**: 使用 Qt Designer 设计的水平布局界面 - **ui_horizontal.py**: 使用 `pyside6-uic` 工具编译后的 Python 文件 - 展示水平布局(QHBoxLayout)的使用方法 **运行**: `python app.py` ### 4. 文件操作 ([file/](file/)) 演示 QFileDialog 的各种用法: | 文件 | 功能说明 | |------|----------| | [base.py](file/base.py) | 文件选择对话框基础示例 | | [file.py](file/file.py) | 文件保存对话框示例(getSaveFileName) | | [file1.py](file/file1.py) | 文件拖拽功能(简化版) | | [dfile.py](file/dfile.py) | 文件拖拽功能(完整版,显示文件路径) | **运行**: - `python file/base.py` - `python file/file.py` - `python file/file1.py` - `python file/dfile.py` ### 5. 列表控件 ([list/](list/)) 演示列表控件的使用: | 文件 | 功能说明 | |------|----------| | [listWidget.py](list/listWidget.py) | QListWidget 使用示例,直接操作列表项 | | [listView.py](list/listView.py) | QListView + QStringListModel 模型-视图架构示例 | **运行**: - `python list/listWidget.py` - `python list/listView.py` ### 6. 表格控件 ([table/base.py](table/base.py)) 演示 QTableWidget 的使用: - 设置表格行列数 - 设置表头标签 - 填充表格数据 - 调整行高列宽 - 表头自适应模式 **运行**: `python table/base.py` ## 安装教程 ### 环境要求 - Python 3.6+ - PySide6 ### 安装步骤 1. **安装 PySide6** ```bash pip install PySide6 ``` 2. **验证安装** ```bash python -c "from PySide6 import QtWidgets; print('PySide6 安装成功')" ``` ### 可选工具 - **Qt Designer**: 可视化界面设计工具 ```bash # PySide6 自带 Designer,通常位于 Python 安装目录的 Scripts 文件夹下 pyside6-designer ``` - **UI 文件编译工具**: 将 .ui 文件转换为 Python 代码 ```bash pyside6-uic input.ui -o output.py ``` ## 使用说明 ### 快速开始 ```bash # 运行主程序 python app.py # 运行各个示例 python base.py # 基础窗口 python speak.py # 文本转语音 python file/base.py # 文件操作 python list/listWidget.py # 列表控件 python table/base.py # 表格控件 ``` ### 开发流程 1. **使用 Qt Designer 设计界面**(可选) - 打开 Qt Designer 设计界面 - 保存为 .ui 文件 2. **编译 UI 文件**(如果使用 Designer) ```bash pyside6-uic layout/horizontal.ui -o layout/ui_horizontal.py ``` 3. **编写业务逻辑代码** - 导入编译后的 UI 类 - 实现事件处理和业务逻辑 ## 学习资源 ### 官方文档 - [Qt for Python 官方文档](https://doc.qt.io/qtforpython-6/contents.html) ### 中文教程 - [PySide6 快速入门](https://www.jianshu.com/p/5f228e586cfd) - [PySide6 详细教程](https://zhuanlan.zhihu.com/p/469649813) ## 核心概念速览 ### 基本组件 | 组件类 | 说明 | |--------|------| | QApplication | 应用程序对象,每个程序必须有且只有一个 | | QWidget | 所有用户界面对象的基类 | | QMainWindow | 主窗口类,通常作为应用程序的主界面 | | QLabel | 标签组件,用于显示文本或图片 | | QPushButton | 按钮组件 | | QLineEdit | 单行文本输入框 | | QTextEdit | 多行文本编辑框 | ### 布局管理 | 布局类 | 说明 | |--------|------| | QVBoxLayout | 垂直布局 | | QHBoxLayout | 水平布局 | | QGridLayout | 网格布局 | | QFormLayout | 表单布局 | ### 信号与槽 PySide6 使用信号(Signal)和槽(Slot)机制处理事件: ```python # 连接信号和槽 button.clicked.connect(self.on_click) # 定义槽函数 @QtCore.Slot() def on_click(self): print("按钮被点击") ``` ## 参与贡献 1. Fork 本仓库 2. 新建 Feat_xxx 分支 3. 提交代码 4. 新建 Pull Request ## 许可证 本项目仅供学习参考使用。