Maya中PySide2配置Markdown CSS:代码块显示异常求助
问题原因
QtGui.QTextDocument的Markdown解析能力有限,对代码块的支持不完善,转成HTML时仅生成无样式的文本块,无法保留代码格式和语法高亮,导致显示异常。
解决方案
使用专业Markdown解析库(如mistune)配合语法高亮工具(highlight.js),生成完整的带样式HTML内容后加载到QWebEngineView中,具体实现如下:
步骤1:安装依赖
如果Maya环境未安装mistune,可通过pip安装:
pip install mistune
步骤2:修改代码
from PySide2 import QtWidgets, QtWebEngineWidgets import mistune # 自定义渲染器,为代码块添加语言标记 class HighlightRenderer(mistune.Renderer): def block_code(self, code, lang=None): if lang: return f'<pre><code class="language-{lang}">{mistune.escape(code)}</code></pre>' return f'<pre><code>{mistune.escape(code)}</code></pre>' # 待渲染的Markdown内容 message = """ ```python import pymel.core as pm print("Hello World")
Test Message
"""
renderer = HighlightRenderer()
markdown_parser = mistune.Markdown(renderer=renderer)
html_content = markdown_parser(message)
full_html = f"""
{html_content} """dialog = QtWidgets.QDialog()
layout = QtWidgets.QVBoxLayout(dialog)
web_engine = QtWebEngineWidgets.QWebEngineView()
p_btn = QtWidgets.QPushButton("Ok")
layout.addWidget(web_engine)
layout.addWidget(p_btn)
web_engine.setHtml(full_html)
p_btn.clicked.connect(dialog.accept)
dialog.setWindowTitle("Notes")
dialog.exec_()
#### 离线环境适配 如果Maya无法访问外部CDN,可下载`highlight.js`的CSS和JS文件到本地,将代码中的CDN链接替换为本地文件路径,例如: ```html <link rel="stylesheet" href="/path/to/github.min.css"> <script src="/path/to/highlight.min.js"></script>
内容的提问来源于stack exchange,提问作者chowooseoung

