Отображение латекса в графическом интерфейсе с питоном - PullRequest
0 голосов
/ 06 сентября 2018

Я создаю «калькулятор» для интеграции и выведения математических уравнений. И я хотел бы отобразить результат в графическом интерфейсе латекса.

Кто-нибудь знает, чтобы создать это?

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()

1 Ответ

0 голосов
/ 06 сентября 2018

Вы можете использовать функцию sympy.preview для создания изображения, а затем использовать 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()

Также обратите внимание, что я исправил ваш интегрированный вызов для передачи содержимого StringVar, а не самого StringVar, для симпотизма.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...