我计划制作一个 GUI,用户可以在其中将他们的数学表达式输入到文本框中,例如 Tkinter Entry Widget,并且他们的表达式将以与您在 symbolab 中键入表达式时所看到的相同的方式显示。
这可能吗?如果是这样,那么我必须使用哪些模块才能完成此任务?
最佳答案
这个问题太宽泛了。我不太确定是否应该为此关闭它。尽管如此,这里有一段关于如何至少让 Latex 以交互方式与 Tk 和 matplotlib 一起工作的片段。
在条目小部件中输入内容并按回车键。
import matplotlib
import matplotlib.pyplot as plt
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg
matplotlib.use('TkAgg')
try:
import Tkinter as tk
except ImportError:
import tkinter as tk
def graph(event=None):
tmptext = entry.get()
tmptext = "$"+tmptext+"$"
ax.clear()
ax.text(0.2, 0.6, tmptext, fontsize=50)
canvas.draw()
root = tk.Tk()
mainframe = tk.Frame(root)
mainframe.pack()
entry = tk.Entry(mainframe, width=70)
entry.pack()
label = tk.Label(mainframe)
label.pack()
fig = matplotlib.figure.Figure(figsize=(5, 4), dpi=100)
ax = fig.add_subplot(111)
canvas = FigureCanvasTkAgg(fig, master=label)
canvas.get_tk_widget().pack(side="top", fill="both", expand=True)
canvas._tkcanvas.pack(side="top", fill="both", expand=True)
ax.get_xaxis().set_visible(False)
ax.get_yaxis().set_visible(False)
entry.insert(0, r"\sum_{i=0}^\infty x_i \frac{y_i}{z_i}")
graph()
root.bind("<Return>", graph)
root.mainloop()
代码应该产生一个如下所示的窗口:
如果你想拥有像他们那样的漂亮界面,这还不够。他们很可能有类似 Latex 到 Unicode 转换设置的纯文本。或者甚至可能直接从纯文本到 Unicode,但我不知道有任何数学表达式的解析器像 latex 一样好,所以所有的规则可能都必须重新编码,这是很多工作,所以他们很可能跳过了这一步,而是让 latex 完成繁重的工作,然后将 latex 解析为 Unicode/Utf8 或任何可以处理所有符号的编码。
然后他们通过一些“额外”的东西(即 django 和 jinja 模板)倾倒所有东西,这些东西根据元素的类型(二元运算符、变量、指数......)为每个元素分配它自己的漂亮的 css 类,以便拥有完整的数学输出看起来不错并且仍然可以复制。
无论如何,这个问题涉及的内容太多,不可能给出一个简明的、包罗万象的简单答案。
关于python - Python是否可以在文本框中实时显示LaTex?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36636185/