使用python在GUI上显示latex
我正在创建一个计算器来积分和推导数学方程。 我想用latex在gui中显示结果 有人知道怎么做吗使用python在GUI上显示latex,python,user-interface,tkinter,Python,User Interface,Tkinter,我正在创建一个计算器来积分和推导数学方程。 我想用latex在gui中显示结果 有人知道怎么做吗 import tkinter as tk from tkinter import ttk def integrate(): import sympy as sp x=sp.Symbol('x') eq.get() integral=sp.integrate(eq,x) var.set('Integration result='+ 'C\u2081')
import tkinter as tk
from tkinter import ttk
def integrate():
import sympy as sp
x=sp.Symbol('x')
eq.get()
integral=sp.integrate(eq,x)
var.set('Integration result='+ 'C\u2081')
win=tk.Tk() # defines window
win2=ttk.Labelframe(win,text='')
win2.grid(column=0, row=0)
# Creates a static txt label
eq_static=ttk.Label(win2,text='Introduce the equation f(x)',font=("Times New Roman", 14))
eq_static.grid(column=0,row=0,padx=5,pady=5)
eq=tk.StringVar()
eq_Entered=ttk.Entry(win2,width=40, textvariable=eq)
eq_Entered.grid(column=1,row=0,padx=5,pady=5)
# Creates a static txt label
var=tk.StringVar()
eq_static=ttk.Label(win2,textvariable=var,font=("Times New Roman", 14))
var.set('Result')
eq_static.grid(column=0,row=3,padx=5,pady=5)
# Calculate button
action=ttk.Button(win2,text='Integrate',command=integrate)
action.grid(column=2,row=0,padx=5,pady=5)
win2.mainloop()
您可以使用该函数生成图像,然后使用BytesIO和PIL使其与tkinter兼容。这里有一个猜测:
import tkinter as tk
from tkinter import ttk
import sympy as sp
from io import BytesIO
from PIL import Image, ImageTk
def integrate():
x=sp.Symbol('x')
integral=sp.integrate(eq.get(),x)
var.set('Integration result='+ 'C\u2081')
obj = BytesIO()
sp.preview(integral, viewer='BytesIO', output='png', outputbuffer=obj)
obj.seek(0)
img_lbl.img = ImageTk.PhotoImage(Image.open(obj))
img_lbl.config(image=img_lbl.img)
win=tk.Tk() # defines window
win2=ttk.Labelframe(win,text='')
win2.grid(column=0, row=0)
# Creates a static txt label
eq_static=ttk.Label(win2,text='Introduce the equation f(x)',font=("Times New Roman", 14))
eq_static.grid(column=0,row=0,padx=5,pady=5)
eq=tk.StringVar(value='4*x')
eq_Entered=ttk.Entry(win2,width=40, textvariable=eq)
eq_Entered.grid(column=1,row=0,padx=5,pady=5)
# Creates a static txt label
var=tk.StringVar()
eq_static=ttk.Label(win2,textvariable=var,font=("Times New Roman", 14))
var.set('Result')
eq_static.grid(column=0,row=3,padx=5,pady=5)
# Calculate button
img_lbl = tk.Label(win2)
img_lbl.grid()
action=ttk.Button(win2,text='Integrate',command=integrate)
action.grid(column=2,row=0,padx=5,pady=5)
win2.mainloop()
还要注意,我修复了您的integral调用,将StringVar的内容而不是StringVar本身传递给sympy Symphy有一个可以实现这一点的打印机。它能在GUI上的某个位置打印吗?它只是生成一个图像。您可以对生成的图像执行任何操作,包括在GUI中显示。您好,感谢您的帮助!但是,我在Tkinter回调回溯最近的调用last中遇到一个错误异常:…如果您不向我显示整个错误,我将无法提供帮助。Tkinter回调回溯最近的调用last中的异常:文件C:\User\anaconda3\lib\Tkinter\u init\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu,在调用返回self.func*args文件C:/Users/pv/Documents/Python Scripts/Scripts/Integrate_derivideate_ODE.py中,第35行,在Integrate sp.previewintegral中,viewer='BytesIO',output='png',outputbuffer=obj文件C:\\Continuum\anaconda3\lib\site packages\symy\printing\preview.py中,第196行,在预览中,raise RuntimeErrorlatex程序未安装RuntimeError:latex程序未安装回溯最近一次调用last:这个错误是不言自明的。您没有安装latex程序,因此sympy无法使用它制作图像。安装latex程序。安装后,我得到以下信息:Tkinter回调回溯中的异常最近一次调用:文件C:\Users\pv\AppData\Local\Continuum\anaconda3\lib\Tkinter\u init\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuy1702,在call return self.func*args文件C:/Users/pv/Documents/Python Scripts/Scripts/script,in integrate obj=BytesIO name错误:未定义名称“BytesIO”