Draw Math Curve,drawmathcurve,from Tkinter


from Tkinter import *import mathroot = Tk()fram = Frame(root)Label(fram,text='f(x):').pack(side=LEFT)func = Entry(fram)func.pack(side=LEFT, fill=BOTH, expand=1)butt = Button(fram, text='Plot')butt.pack(side=RIGHT)fram.pack(side=TOP)fram = Frame(root)bounds = []for label in 'minX', 'maxX', 'minY', 'maxY':    Label(fram,text=label+':').pack(side=LEFT)    edit = Entry(fram, width=6)    edit.pack(side=LEFT)    bounds.append(edit)fram.pack(side=TOP)c = Canvas(root)c.pack(side=TOP, fill=BOTH, expand=1)def minimax(values=[0.0, 1.0, 0.0, 1.0]):    for i in range(4):        edit = bounds[i]        try: values[i] = float(edit.get())        except: pass        edit.delete(0, END)        edit.insert(END, '%.2f'%values[i])    return valuesdef plot():    minx, maxx, miny, maxy = minimax()    f = func.get()    f = compile(f, f, 'eval')    CX = c.winfo_width()    CY = c.winfo_height()    coords = []    for i in range(0,CX,5):        coords.append(i)        x = minx + ((maxx-minx)*i)/CX        y = eval(f, vars(math), {'x':x})        j = CY*(y-miny)/(maxy-miny)        coords.append(j)    c.delete(ALL)    c.create_line(*coords)butt.config(command=plot)f = 'sin(x) + cos(x)'func.insert(END, f)minimax([0.0, 10.0, -2.0, 2.0])root.mainloop()

评论关闭