Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用python在GUI上显示latex_Python_User Interface_Tkinter - Fatal编程技术网

使用python在GUI上显示latex

使用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')

我正在创建一个计算器来积分和推导数学方程。 我想用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')

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”