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

告别丑陋代码块!用PyQt5+pygments实现Word代码高亮粘贴(附完整源码)

告别丑陋代码块用PyQt5pygments实现Word代码高亮粘贴附完整源码在技术文档编写过程中代码展示是不可或缺的部分。然而直接将IDE中的代码复制到Word文档时往往会丢失原有的高亮和格式变成单调的黑白文本。这不仅影响文档的美观性也降低了代码的可读性。本文将介绍如何利用PyQt5和pygments库构建一个开箱即用的GUI工具实现代码高亮并完美粘贴到Word文档中。1. 工具设计与核心功能代码高亮工具的核心目标是解决开发者日常文档编写中的痛点。我们需要的不仅是一个简单的转换工具而是一个具备完整功能的解决方案多语言支持能够识别并高亮显示多种编程语言的代码样式自定义提供多种高亮主题供用户选择行号显示可选是否显示行号方便代码引用实时预览转换结果即时可见无需反复尝试一键复制简化操作流程提升效率PyQt5作为Python的GUI工具包提供了强大的界面构建能力而pygments则是专业的代码高亮库两者的结合能够完美实现上述功能。2. 环境准备与依赖安装在开始构建工具前需要确保开发环境已准备好必要的依赖项。以下是所需的Python库及其安装方法pip install PyQt5 PyQtWebEngine pygments这些库分别提供以下功能PyQt5GUI界面开发框架PyQtWebEngine在PyQt5中嵌入Web引擎用于显示HTML内容pygments代码高亮处理核心库安装完成后可以通过以下命令验证是否安装成功import PyQt5 from pygments import highlight print(所有依赖已正确安装)3. 核心功能实现3.1 代码高亮转换引擎代码高亮的核心功能由pygments库实现。我们需要构建一个转换函数将原始代码转换为带样式的HTMLfrom pygments import highlight from pygments.lexers import get_lexer_by_name from pygments.formatters import HtmlFormatter def code_to_html(code, languagepython, styledefault, linenosFalse): 将代码转换为带高亮的HTML :param code: 原始代码文本 :param language: 编程语言类型 :param style: 高亮主题样式 :param linenos: 是否显示行号 :return: 带样式的HTML字符串 try: lexer get_lexer_by_name(language) formatter HtmlFormatter(stylestyle, linenoslinenos) return highlight(code, lexer, formatter) except: return fpre{code}/pre3.2 PyQt5 GUI界面设计使用PyQt5构建用户友好的界面主要包含以下组件代码输入区域QTextEdit控件用于输入或粘贴原始代码预览区域QWebEngineView控件显示高亮后的代码效果控制面板语言选择下拉框样式主题选择下拉框行号显示复选框转换按钮from PyQt5.QtWidgets import (QMainWindow, QWidget, QVBoxLayout, QHBoxLayout, QTextEdit, QComboBox, QCheckBox, QPushButton) from PyQt5.QtWebEngineWidgets import QWebEngineView class CodeHighlighterApp(QMainWindow): def __init__(self): super().__init__() self.init_ui() def init_ui(self): # 主窗口设置 self.setWindowTitle(代码高亮转换工具) self.setGeometry(100, 100, 800, 600) # 中央部件 central_widget QWidget() self.setCentralWidget(central_widget) # 主布局 main_layout QHBoxLayout() central_widget.setLayout(main_layout) # 左侧面板输入和控制 left_panel QWidget() left_layout QVBoxLayout() left_panel.setLayout(left_layout) # 控制面板 control_panel QWidget() control_layout QHBoxLayout() control_panel.setLayout(control_layout) # 语言选择 self.lang_combo QComboBox() self.lang_combo.addItems([Python, Java, C, JavaScript, HTML, CSS]) control_layout.addWidget(self.lang_combo) # 样式选择 self.style_combo QComboBox() self.style_combo.addItems([default, monokai, friendly, vim]) control_layout.addWidget(self.style_combo) # 行号复选框 self.linenos_check QCheckBox(显示行号) control_layout.addWidget(self.linenos_check) # 转换按钮 self.convert_btn QPushButton(转换) self.convert_btn.clicked.connect(self.convert_code) control_layout.addWidget(self.convert_btn) left_layout.addWidget(control_panel) # 代码输入框 self.code_input QTextEdit() self.code_input.setPlaceholderText(在此粘贴或输入代码...) left_layout.addWidget(self.code_input) # 右侧预览面板 self.preview QWebEngineView() self.preview.setHtml(h3转换结果将显示在这里/h3) # 将左右面板添加到主布局 main_layout.addWidget(left_panel, 1) main_layout.addWidget(self.preview, 1)4. 高级功能实现4.1 样式自定义与扩展pygments提供了丰富的内置样式但我们也可以自定义样式以满足特定需求。以下是自定义样式的实现方法from pygments.style import Style from pygments.token import Keyword, Name, Comment, String class CustomStyle(Style): default_style styles { Keyword: #FF0000 bold, Name: #00FF00, Comment: #888888 italic, String: #0000FF }要将自定义样式应用到工具中需要修改转换函数def code_to_html(code, languagepython, styleCustomStyle, linenosFalse): lexer get_lexer_by_name(language) formatter HtmlFormatter(stylestyle, linenoslinenos) return highlight(code, lexer, formatter)4.2 Word粘贴优化为了确保高亮代码能完美粘贴到Word中需要注意以下几点HTML结构优化Word对HTML的解析有其特殊性需要确保生成的HTML结构简洁内联样式优先尽量使用内联样式而非外部CSS提高Word兼容性表格布局使用表格布局可以更好地保持代码块的格式优化后的转换函数示例def code_to_word_html(code, languagepython, styledefault, linenosFalse): lexer get_lexer_by_name(language) formatter HtmlFormatter(stylestyle, linenoslinenos, noclassesTrue) highlighted highlight(code, lexer, formatter) # 添加Word兼容的HTML结构 return f html body table border0 cellspacing0 cellpadding0 styleborder:1px solid #ccc; trtd stylepadding:5px; background:#f5f5f5; {highlighted} /td/tr /table /body /html 5. 完整工具集成与使用指南将上述功能模块整合后我们得到一个完整的代码高亮转换工具。以下是工具的使用步骤启动工具运行Python脚本打开GUI界面输入代码在左侧文本框中粘贴或输入需要高亮的代码设置选项选择代码对应的编程语言选择喜欢的高亮主题根据需要勾选显示行号转换预览点击转换按钮右侧将显示高亮效果复制到Word在预览区域全选(CtrlA)复制(CtrlC)在Word文档中粘贴(CtrlV)对于开发者来说这个工具可以进一步扩展添加更多语言支持通过pygments支持的lexer扩展自定义主题创建符合公司或团队文档规范的样式批量处理添加对多个代码文件批量转换的功能快捷键支持增加常用操作的快捷键提升效率if __name__ __main__: import sys from PyQt5.QtWidgets import QApplication app QApplication(sys.argv) window CodeHighlighterApp() window.show() sys.exit(app.exec_())在实际使用中我发现将工具打包为可执行文件会极大提升便利性。可以使用PyInstaller进行打包pyinstaller --onefile --windowed code_highlighter.py这将在dist目录下生成独立的可执行文件无需安装Python环境即可运行。

相关文章:

告别丑陋代码块!用PyQt5+pygments实现Word代码高亮粘贴(附完整源码)

告别丑陋代码块!用PyQt5pygments实现Word代码高亮粘贴(附完整源码) 在技术文档编写过程中,代码展示是不可或缺的部分。然而,直接将IDE中的代码复制到Word文档时,往往会丢失原有的高亮和格式,变成…...

开源工具Cats Blender插件:模型导入效率提升全攻略

开源工具Cats Blender插件:模型导入效率提升全攻略 【免费下载链接】cats-blender-plugin :smiley_cat: A tool designed to shorten steps needed to import and optimize models into VRChat. Compatible models are: MMD, XNALara, Mixamo, DAZ/Poser, Blender R…...

Mac/Win/Linux全平台实测:用Ollama一键部署DeepSeek-R1 7B模型,附硬件配置建议

Mac/Win/Linux全平台实测:用Ollama一键部署DeepSeek-R1 7B模型,附硬件配置建议 去年在帮创业团队搭建本地AI开发环境时,我试遍了市面上所有开源模型部署方案。当Ollama首次支持DeepSeek-R1时,其跨平台兼容性让我眼前一亮——同一套…...

Andi活码,最简单好用!

上链接: https://app.andi.cn/qr/ 试用过这么多群聊二维码的活码工具。 真正好用的是我推荐的这款Andi活码。 免登录、打开即用。单屏管理,超简单好用。 优威科技有限公司出品。 承诺永久免费长期支持。 稳定可靠好用! 不信我来用一下…...

YOLOv11涨点改进| TPAMI 2026 |全网创新首发、注意力改进篇|引入ASSA自适应稀疏自注意力,顶刊万能涨点模块,含5种超强创新,适合目标检测,图像分割,图像分类,图像超分等任务高效涨点

一、本文介绍 🔥本文给大家介绍利用将 ASSA自适应稀疏自注意力模块改进 YOLOv11网络模型,可以显著提升模型的特征建模能力和复杂场景下的检测性能。ASSA通过自注意力机制在全局范围内建立不同空间位置之间的依赖关系,使网络能够充分利用全局上下文信息,从而增强特征表达能…...

Java 17 新特性实战:现代 Java 开发的优雅实践

Java 17 新特性实战:现代 Java 开发的优雅实践 前言 大家好。最近很多读者朋友询问 Java 17 的新特性以及如何在项目中应用这些特性。作为一个长期使用 Java 的架构师,今天我想分享一下 Java 17 的新特性以及在实际项目中的应用经验。 Java 17 的核心新特…...

基于.NET 11 与C# 14的高性能安全客户端应用开发

基于.NET 11 与C# 14的高性能安全客户端应用开发 前言 在客户端应用开发领域,性能与安全始终是关键指标。随着.NET 11 和 C# 14 的推出,开发者拥有了更强大的工具来构建高性能且安全可靠的客户端应用。这些新技术不仅提升了应用的运行效率,还…...

Keil5实战:手把手教你制作自定义FLM插件(附完整驱动配置)

Keil5实战:手把手教你制作自定义FLM插件(附完整驱动配置) 在嵌入式开发领域,Flash编程算法(FLM)是连接开发环境与目标芯片闪存的重要桥梁。当我们需要支持非标准闪存芯片或特殊外设接口时,自定义…...

微软研究院:让AI在现实世界中越用越聪明的“在线体验学习法“

这项由微软研究院团队完成的研究发表于2026年3月的arXiv预印本数据库,论文编号为arXiv:2603.16856v1。有兴趣深入了解的读者可以通过该编号查询完整论文。这项研究被称为"体验学习系列"的第二部分,第一部分专注于"在线策略情境蒸馏"…...

pyNastran:工程仿真领域的Python变革者——打破商业软件垄断的技术突围

pyNastran:工程仿真领域的Python变革者——打破商业软件垄断的技术突围 【免费下载链接】pyNastran A Python-based interface tool for Nastrans file formats 项目地址: https://gitcode.com/gh_mirrors/py/pyNastran 价值定位:重新定义工程仿真…...

DeepSeek-R1-Distill-Qwen-7B功能体验:Ollama部署后,实测推理速度提升3倍

DeepSeek-R1-Distill-Qwen-7B功能体验:Ollama部署后,实测推理速度提升3倍 1. 模型背景与核心优势 1.1 模型技术背景 DeepSeek-R1-Distill-Qwen-7B是华为昇腾与阿里达摩院技术协作的产物,通过知识蒸馏技术将DeepSeek-R1(660B参数…...

探索Java字节码的秘密:专业级反编译工具实战指南

探索Java字节码的秘密:专业级反编译工具实战指南 【免费下载链接】jd-gui A standalone Java Decompiler GUI 项目地址: https://gitcode.com/gh_mirrors/jd/jd-gui Java反编译工具是中级开发者提升代码分析效率的关键利器,它能够将编译后的字节码…...

AI 提示词秒变高手!5 步精准操控法,输出效果直接翻倍

AI 提示词精准操控指南|可直接套用模板想要 AI 输出又快又准,别再靠瞎猜。这套5 步黄金提示法,照着填就能让输出质量翻倍。第一步:锁定目标 —— 用「动词 结果」精准定位模板:生成 / 分析 / 优化【具体内容】&#x…...

Grep vs RAG vs ACE:AI编程助手如何选择?实测对比三大代码检索技术

Grep vs RAG vs ACE:AI编程助手技术选型实战指南 当团队需要引入AI编程助手时,技术负责人常陷入工具选择的困境。市面上主流的代码检索技术可分为三大流派:基于传统文本匹配的Grep路线、依赖向量数据库的RAG方案,以及新兴的混合检…...

OmenSuperHub:惠普游戏本性能控制终极指南 - 开源替代方案全面解析

OmenSuperHub:惠普游戏本性能控制终极指南 - 开源替代方案全面解析 【免费下载链接】OmenSuperHub 项目地址: https://gitcode.com/gh_mirrors/om/OmenSuperHub 还在为惠普Omen Gaming Hub的臃肿体积和隐私担忧而烦恼吗?OmenSuperHub为你提供了一…...

Illustrator批量替换实战指南:用ReplaceItems释放设计效率

Illustrator批量替换实战指南:用ReplaceItems释放设计效率 【免费下载链接】illustrator-scripts Adobe Illustrator scripts 项目地址: https://gitcode.com/gh_mirrors/il/illustrator-scripts 你是不是经常在Illustrator中遇到这样的场景:需要…...

2025年雀魂Mod工具终极指南:从痛点分析到实践探索

2025年雀魂Mod工具终极指南:从痛点分析到实践探索 【免费下载链接】majsoul_mod_plus 雀魂解锁全角色、皮肤、装扮等,支持全部服务器。 项目地址: https://gitcode.com/gh_mirrors/ma/majsoul_mod_plus 在雀魂游戏体验中,你是否曾因角…...

多平台网络资源捕获工具:突破下载限制的技术实现与场景化应用

多平台网络资源捕获工具:突破下载限制的技术实现与场景化应用 【免费下载链接】res-downloader 资源下载器、网络资源嗅探,支持微信视频号下载、网页抖音无水印下载、网页快手无水印视频下载、酷狗音乐下载等网络资源拦截下载! 项目地址: https://gitc…...

5步征服显存难题:多语言MiniLM模型量化优化实战指南

5步征服显存难题:多语言MiniLM模型量化优化实战指南 【免费下载链接】paraphrase-multilingual-MiniLM-L12-v2 项目地址: https://ai.gitcode.com/hf_mirrors/ai-gitcode/paraphrase-multilingual-MiniLM-L12-v2 1. 诊断显存瓶颈 在部署paraphrase-multili…...

【Godot】【整活】用 50 行代码做一个“抖音同款解压小游戏”(附源码)

最近短视频平台上经常能看到一种“解压小游戏”: 点一下 → 爆炸特效 💥 滑一下 → 连锁反应 🎯 满屏粒子 → 爽感拉满 😎 这些游戏的核心特点只有三个字: 👉 简单、直接、上头 今天我们就用 Godot 4,只用 约 50 行代码,实现一个“点击爆炸”的解压小游戏。 精…...

基于ATP的10kV并联电容暂态过程仿真

基于ATP的10kV并联电容暂态过程仿真在电力系统中,10kV并联电容装置起着至关重要的作用,比如提高功率因数、改善电压质量等。然而,其暂态过程却较为复杂,需要深入研究。ATP(Alternative Transients Program)…...

告别‘unbox’失败:Truffle项目初始化保姆级教程,从MetaCoin到自定义合约

告别‘unbox’失败:Truffle项目初始化保姆级教程,从MetaCoin到自定义合约 当你第一次接触Truffle框架时,那种兴奋感可能很快就会被truffle unbox metacoin命令失败的红字提示浇灭。别担心,这几乎是每个区块链开发者的必经之路。本…...

【递归算法】全排列 Ⅱ

题目链接 文章摘要: 本文解析了LeetCode上"全排列II"问题,要求在包含重复数字的数组中返回所有不重复的全排列。通过分析决策树,指出需在标准全排列解法基础上增加剪枝策略,避免重复结果。详细讲解了两种剪枝思路&#…...

VOOHU 沃虎电子 千兆PoE+集成式RJ45连接器 SYT411Q199DB2A1DP 内置网络变压器 支持720mA供电 适用于PoE交换机与无线AP

苏州沃虎电子科技有限公司(品牌:VOOHU)供应的 SYT411Q199DB2A1DP 是一款高性能千兆集成式RJ45连接器,内置符合IEEE 802.3at标准的网络变压器,支持PoE(高达720mA)供电。该产品采用90侧插DIP封装&…...

终极指南:如何用 YahooFinanceApi 快速获取免费金融数据

终极指南:如何用 YahooFinanceApi 快速获取免费金融数据 【免费下载链接】YahooFinanceApi A handy Yahoo! Finance api wrapper, based on .NET Standard 2.0 项目地址: https://gitcode.com/gh_mirrors/ya/YahooFinanceApi 你是否正在寻找一个简单、免费且…...

实战级SQL注入测试技巧揭秘

目录 一、高阶注入判断技巧(不爆数据,只测漏洞) 1. 布尔盲注(Boolean-based) 2. 时间盲注(Time-based) 3. 报错注入(Error-based) 二、高阶利用手法(实战…...

在给ppt接入扣子空间(Ai)/智能体,新玩法10分钟搞定说课,公开课AI互动!

做 PPT 时,你是否遇到过这些痛点:演讲中观众突然提问,临时组织语言容易逻辑混乱;同一问题被反复询问,浪费演示时间;静态页面无法按需补充细节,信息传递不精准。而扣子空间(Coze&…...

kali制作木马

黑客必备工具:Metasploit Framework(MSF)1. 生成木马程序: > msfvenom -p linux/x64/shell/reverse_tcp LHOST攻击机ip(Kali) LPORT9999 -f elf -o shell.elf2. 启动控制程序: > msfconsole > use exploit/mu…...

C++ 无原生 JSON 支持?一文实现通用序列化与反序列化封装方案

前言 在现代软件开发中,JSON(JavaScript Object Notation)因其轻量级和易读性成为数据交换的主流格式。C虽无原生JSON支持,但通过封装第三方库(如nlohmann/json),可高效实现序列化(…...

华硕笔记本性能困境突破:G-Helper工具的全方位优化方案

华硕笔记本性能困境突破:G-Helper工具的全方位优化方案 【免费下载链接】g-helper Lightweight Armoury Crate alternative for Asus laptops. Control tool for ROG Zephyrus G14, G15, G16, M16, Flow X13, Flow X16, TUF, Strix, Scar and other models 项目地…...