You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Maya中PySide2配置Markdown CSS:代码块显示异常求助

解决Maya中PySide2 Markdown代码块显示异常问题

问题原因

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

Test Message

"""

解析Markdown为带语法标记的HTML

renderer = HighlightRenderer()
markdown_parser = mistune.Markdown(renderer=renderer)
html_content = markdown_parser(message)

构造完整HTML页面,引入高亮样式和脚本

full_html = f"""

{html_content} """
创建对话框并加载HTML

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 04:01:56