首页 > 解决方案 > 使用 python 在 GUI 上显示乳胶

问题描述

我正在创建一个“计算器”来整合和推导数学方程。我想在乳胶的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()

标签: pythonuser-interfacetkinter

解决方案


您可以使用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 本身传递给 sympy。


推荐阅读