【问题标题】:How to display mathematical typesetting (MathJax, LaTeX, etc.) in Qt using PyQt5?如何使用 PyQt5 在 Qt 中显示数学排版(MathJax、LaTeX 等)?
【发布时间】:2019-11-07 16:38:27
【问题描述】:

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

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

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

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

【问题讨论】:

  • @PatrickArtner,我不明白其中任何一个如何解决我所问的问题。第一篇文章没有公认的答案,也没有给出相关的解决方案。第二个答案是针对不同版本的 Python,QT 的过时版本,并给出了一个荒谬且不必要的复杂解决方案。
  • 是的。但是除了“我已经彻底研究了如何做到这一点”之外,您没有显示任何搜索结果。所以我想我花了 1 分钟的时间在谷歌上搜索并给你一些提示。第一个问题没有 accepted 答案 - 但您可以跟进一个答案。 2.7 的解决方案也可以适应使用 3.x...

标签: python-3.x qt latex pyqt5 mathjax


【解决方案1】:

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

  1. 首先,导入QApplicationQWebEngineView

    import sys
    from PyQt5.QtWidgets import QApplication
    from PyQt5.QtWebEngineWidgets import QWebEngineView
    
  2. 然后,编写一个包含 HTML 代码的多行字符串。该代码应导入 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 模块并将其保存为代码中的字符串。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-07-31
    • 2018-02-22
    • 1970-01-01
    • 1970-01-01
    • 2021-06-26
    • 2013-12-27
    • 1970-01-01
    • 2015-05-24
    相关资源
    最近更新 更多