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

9

我对Qt和PyQt5相对较新,希望在GUI窗口中显示数学排版。具体而言,我希望它能够动态更新。我似乎找不到任何有用的信息来解决这个问题。

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

一个看起来相关的答案可以在这里找到,但没有给出解决方案,也没有实际解决在GUI中显示排版数学的问题。

另一个看起来相关的答案可以在这里找到,但使用的是PySide(和Python 2.7),并且给出了一个荒谬和不必要复杂且过时的答案。


@PatrickArtner,我不认为这两个回答解决了我的问题。第一个帖子没有被接受的答案,也没有给出相关的解决方案。第二个答案是针对不同版本的Python,过时的QT版本,并且提供了一个荒谬而不必要地复杂的解决方案。 - clockelliptic
是的,但是除了“我已经彻底研究了如何做到这一点”之外,你没有展示任何搜索结果。因此,我想花1分钟在谷歌上搜索并给你一些提示。第一个问题没有“已被接受”的答案-但有一个你可以追踪的答案。2.7的解决方案也可以适用于3.x... - Patrick Artner
1个回答

11

我找到了一种非常简单易行的方法来做这件事。下面给出的示例需要联网才能访问MathJax JS模块。

  1. 首先,导入 QApplication QWebEngineView

  2. import sys
    from PyQt5.QtWidgets import QApplication
    from PyQt5.QtWebEngineWidgets import QWebEngineView
    
  3. 接下来,编写一个包含HTML代码的多行字符串。该代码应导入MathJax JavaScript模块。然后,编写您的数学方程式...

  4. 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>
                 """
    
  5. 最后,实例化一个QApplication,实例化一个QWebEngineView,并将WebEngineView设置为显示您新编写的HTML代码:

  6. app = QApplication(sys.argv)
    webView = QWebEngineView()
    webView.setHtml(pageSource)
    
    不要忘记在您的WebEngineView上调用show方法。
    webView.show()
    sys.exit(app.exec_())
    

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接