# python demo **Repository Path**: BambooScript-Dialogues/python-demo ## Basic Information - **Project Name**: python demo - **Description**: 青简问对python版本demo - **Primary Language**: Unknown - **License**: MulanPSL-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2025-10-04 - **Last Updated**: 2025-10-05 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 草原悍将·赫连赫苍 聊天应用 ## 项目简介 这是一个基于PyQt5和Web技术的桌面聊天应用程序,以"草原悍将·赫连赫苍"为主题,提供了一个视觉精美的交互式聊天界面。该应用结合了Python的桌面GUI能力和现代Web技术,创造了一个具有独特风格的聊天体验。 ![人物](./images/赫连赫苍.png) ## 功能特点 - **视觉设计** - 精美的草原风格背景展示 - 底部聊天区域设计,不遮挡主要背景画面 - 自适应窗口大小,根据背景图片比例自动调整 - 支持高DPI显示,适应不同分辨率屏幕 - 响应式界面设计,在不同设备上都能良好显示 - **交互体验** - 置顶窗口显示,方便用户随时访问 - 实时聊天消息发送与接收 - 支持文本格式化,特别是括号内容的特殊样式 - 语音合成功能,可将聊天消息转换为语音播放 - 消息时间戳显示,便于追踪对话历史 - **技术特性** - 基于PyQt5的桌面应用框架 - 内嵌WebEngine视图渲染HTML界面 - 使用模力方舟API进行语音合成 - 完整的错误处理和用户提示机制 - 自动依赖检测和安装脚本 ### 技术栈组成 - **后端框架**: Python 3.x + PyQt5 - **前端技术**: HTML5 + CSS3 + JavaScript - **语音合成**: 模力方舟API - **UI渲染**: QtWebEngine - **包管理**: pip (Python) + npm (Node.js) ### 架构流程图 用户操作 → PyQt5主程序 → QtWebEngine渲染 → HTML/CSS/JS界面 → 用户交互 ↓ ↓ 本地资源访问(图片/音频) API调用(聊天/语音合成) ## 项目结构详解 python-demo/ ├── README.md # 项目说明文档 ├── README.en.md # 英文项目说明文档 ├── start.bat # Windows启动脚本(自动安装依赖并运行) ├── main.py # Python主程序文件 ├── index.html # HTML聊天界面 ├── styles.css # 样式表 ├── script.js # 核心JavaScript脚本 ├── voice-synthesis.js # 语音合成功能模块 ├── package.json # Node.js项目配置文件 ├── package-lock.json # Node.js依赖锁定文件 ├── images/ # 图片资源目录 │ └── 赫连赫苍.png # 主背景图片 └── voices/ # 语音资源目录 └── 赫连赫苍.mp3 # 示例语音文件 ### 核心文件说明 - **main.py**: 应用程序入口,使用PyQt5创建窗口并加载Web内容 - **index.html**: 定义聊天界面的HTML结构 - **styles.css**: 控制界面样式,包括背景、聊天框、消息等视觉元素 - **script.js**: 实现聊天逻辑,包括消息发送、接收和处理 - **voice-synthesis.js**: 语音合成功能,集成模力方舟API - **start.bat**: 自动化启动脚本,检查并安装依赖,然后运行程序 ## 安装与使用指南 ### 系统要求 - **操作系统**: Windows 7/8/10/11 - **Python**: 3.6或更高版本 - **Node.js**: (可选) 12.x或更高版本(用于语音合成功能) - **内存**: 至少2GB RAM - **磁盘空间**: 至少100MB可用空间 ### 快速开始(推荐) 1. 确保您的计算机已安装Python 2. 双击运行`start.bat`文件 3. 脚本会自动检查环境、安装必要依赖并启动应用程序 4. 应用程序启动后,您将看到聊天界面 ### 手动安装方法 如果您希望手动安装依赖并运行程序,可以按照以下步骤操作: #### 安装Python依赖 ```bash pip install PyQt5 PyQt5-sip PyQtWebEngine ``` #### 安装Node.js依赖(可选,用于语音合成功能) ```bash npm install ``` #### 运行应用程序 ```bash python main.py ``` ## 功能模块详细说明 ### 1. 主程序模块 (main.py) - **窗口管理**: 创建置顶窗口,自动调整大小并居中显示 - **Web视图集成**: 使用QtWebEngine加载并显示HTML界面 - **文件系统集成**: 读取本地图片和资源文件 - **高DPI支持**: 自动适应不同分辨率和缩放比例的显示器 核心功能类: - `HTMLViewer`: 主窗口类,负责初始化UI和处理页面加载完成事件 - 关键方法: `init_ui()`, `on_page_loaded()`, `get_image_aspect_ratio_and_adjust_window()` ### 2. 聊天界面模块 (index.html + styles.css) - **布局设计**: 底部聊天区域,背景图片全屏显示 - **消息展示**: 气泡式聊天消息布局 - **输入区域**: 文本输入框和发送按钮 - **视觉效果**: 半透明效果、阴影、圆角等现代UI元素 ### 3. 聊天逻辑模块 (script.js) - **消息处理**: 发送、接收和显示聊天消息 - **文本格式化**: 处理特殊格式文本,如括号内容 - **聊天历史管理**: 维护完整的对话上下文 - **API集成**: 与聊天API进行通信 关键功能: - `addMessage()`: 添加消息到聊天区域 - `processBracketContent()`: 处理特殊格式文本 - API配置和调用逻辑 ### 4. 语音合成模块 (voice-synthesis.js) - **文本到语音转换**: 使用模力方舟API将文本转换为语音 - **流式音频播放**: 支持边下载边播放的流式处理 - **用户界面集成**: 为聊天消息添加语音播放按钮 - **错误处理**: 完善的异常处理和用户反馈机制 核心类和方法: - `VoiceSynthesizer`: 语音合成核心类 - `streamVoiceWithStreaming()`: 流式语音合成方法 - `addVoiceButtons()`: 为消息添加语音播放按钮 ## 配置说明 ### API配置 在`script.js`和`voice-synthesis.js`文件中,您可以配置API相关参数: ```javascript // API配置 - script.js const API_KEY = 'KQOFBQEBBIZCFT6EJMSCTZCQIKB2R9ZVAQEVWK1P'; // 替换为您的API密钥 const API_URL = 'https://ai.gitee.com/api/v1/chat/completions'; // voice-synthesis.js中的API配置 this.base_url = 'https://ai.gitee.com/v1'; this.API_KEY = 'KQOFBQEBBIZCFT6EJMSCTZCQIKB2R9ZVAQEVWK1P'; ``` ### 聊天角色配置 在`script.js`中,您可以修改聊天角色的初始设定: ```javascript let chatHistory = [ { role: 'system', content: '你是一个古风草原悍将,名叫赫连赫苍,你粗犷豪迈,嘴里偶尔会冒出脏话,一切处事逻辑都很粗暴,(笑了笑)原来是个中原小毛孩,他妈的事情真多(手中长刀仍在你面前)来,练练手!' } ]; ``` ## 使用方法详解 ### 基本聊天操作 1. 在底部输入框中输入您想发送的消息 2. 点击"发送"按钮或按Enter键发送消息 3. 消息将显示在聊天区域中,对方(赫连赫苍)会回复您的消息 ### 语音播放功能 1. 对于收到的消息,左侧会显示一个语音播放按钮(🔊图标) 2. 点击该按钮可以播放消息的语音版本 3. 再次点击按钮可以暂停播放 4. 语音播放过程中,按钮图标会变为暂停图标(⏸️) ### 窗口控制 - 应用程序窗口默认置顶显示,方便您在使用其他应用时也能看到聊天界面 - 窗口大小会根据背景图片自动调整,确保最佳显示效果 - 窗口会自动居中显示在屏幕上 ## 常见问题与解决方案 ### 1. 程序无法启动,提示未找到Python - **问题**: 系统中未安装Python或Python未添加到环境变量 - **解决方案**: 从[Python官网](https://www.python.org/downloads/)下载并安装Python,安装时勾选"Add Python to PATH"选项 ### 2. 依赖安装失败 - **问题**: pip安装PyQt5等依赖时失败 - **解决方案**: - 更新pip到最新版本:`python -m pip install --upgrade pip` - 尝试使用国内镜像源:`pip install PyQt5 PyQtWebEngine -i https://pypi.tuna.tsinghua.edu.cn/simple` ### 3. 语音功能无法使用 - **问题**: 未安装Node.js或API配置错误 - **解决方案**: - 从[Node.js官网](https://nodejs.org/)下载并安装Node.js - 确保API密钥和URL配置正确 - 检查网络连接是否正常 ### 4. 窗口显示异常或背景图片未加载 - **问题**: 图片文件路径错误或显示设置问题 - **解决方案**: - 确保`images/赫连赫苍.png`文件存在且未损坏 - 尝试调整屏幕分辨率和缩放设置 ## 高级配置与自定义 ### 自定义背景图片 1. 准备一张您喜欢的图片 2. 将图片命名为`赫连赫苍.png`并替换`images/`目录下的原文件 3. 重新启动应用程序,窗口会自动根据新图片的比例调整大小 ### 修改聊天角色个性 1. 打开`script.js`文件 2. 找到`chatHistory`数组中的system消息 3. 修改content字段的值,定义新的角色设定 4. 保存文件并重新启动应用程序 ### 调整界面样式 1. 打开`styles.css`文件 2. 根据您的喜好修改样式定义 3. 保存文件并重新启动应用程序以查看更改效果 ## 开发说明 ### 项目扩展建议 - 添加更多聊天角色和背景主题 - 实现本地消息历史记录保存 - 添加更多交互功能,如表情、图片发送等 - 支持多语言界面切换 - 优化语音合成质量和速度 ### 代码贡献指南 1. Fork本项目到您的个人仓库 2. 创建新的分支进行开发 3. 提交您的修改并确保代码风格一致 4. 创建Pull Request,描述您的修改内容和目的 ## 版权信息 本项目为个人学习和演示用途。 - 所有图片和音频资源版权归原作者所有 - 代码部分遵循MIT许可证 ## 联系方式 如有任何问题或建议,请随时联系项目作者 QQ:1486853830 微信:19112913292