如何使用PyQt5在Qt中显示数学排版(MathJax、LaTeX等)?

How to display mathematical typesetting (MathJax, LaTeX, etc.) in Qt using PyQt5?

我是 Qt 和 PyQt5 的新手,想在 GUI 中显示数学排版 window。具体来说,我希望它能够动态更新。我似乎找不到任何有关如何使用 PyQt5 执行此操作的有用信息。

我已经彻底研究了如何做到这一点

找到了一个看似相关的答案here,但没有给出解决方案,也没有真正解决在 GUI 中显示排版数学的问题。

找到了另一个看似相关的答案 ,但使用 PySide(和 python 2.7)并给出了一个荒谬且不必要的复杂和过时的答案。

我想出了如何以一种非常简单的方式做到这一点。下面给出的示例需要互联网连接才能访问 MathJax JS 模块。

  1. 首先导入QApplicationQWebEngineView.

    import sys
    from PyQt5.QtWidgets import QApplication
    from PyQt5.QtWebEngineWidgets import QWebEngineView
    
  2. 然后,写一个包含HTML代码的multi-line字符串。该代码应导入 MathJax javascript 模块。然后,写下你的数学方程式...

    pageSource = """
                 <html><head>
                 <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js?config=TeX-AMS-MML_HTMLorMML">                     
                 </script></head>
                 <body>
                 <p><mathjax style="font-size:2.3em">$$u = \int_{-\infty}^{\infty}(awesome)\cdot du$$</mathjax></p>
                 </body></html>
                 """
    
  3. 最后,实例化一个QApplication,实例化一个QWebEngineView,设置WebEngineView显示你新写的HTML代码:

    app = QApplication(sys.argv)
    webView = QWebEngineView()
    webView.setHtml(pageSource)
    
  4. 别忘了在 WebEngineView 上调用 show。

    webView.show()
    sys.exit(app.exec_())
    

如果您想创建一个不需要互联网连接到 运行 MathJax JS 文件的应用程序,只需复制 JS 模块并将其另存为代码中的字符串。