From c763f723095ada3fc1c683929a410ef533cfa93d Mon Sep 17 00:00:00 2001 From: Andrew Guschin Date: Tue, 6 Apr 2021 14:50:56 +0400 Subject: =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=B8=D0=BB=20=D0=BF?= =?UTF-8?q?=D0=BE=D0=BB=D1=8C=D0=B7=D0=BE=D0=B2=D0=B0=D1=82=D0=B5=D0=BB?= =?UTF-8?q?=D1=8C=D1=81=D0=BA=D0=B8=D0=B5=20=D0=B3=D1=80=D0=B0=D1=84=D1=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- python-graphics/main.py | 24 +++++++++++++++++++++--- python-graphics/plotter.py | 6 ++++++ 2 files changed, 27 insertions(+), 3 deletions(-) diff --git a/python-graphics/main.py b/python-graphics/main.py index fabdd92..177bf3f 100644 --- a/python-graphics/main.py +++ b/python-graphics/main.py @@ -2,7 +2,10 @@ import tkinter as tk from tkinter import filedialog as fd from tkinter import ttk -from plotter import plot_preset, plot_points +from plotter import plot_preset, plot_points, plot_user + +from sympy.parsing.sympy_parser import parse_expr +from sympy.plotting import plot class PlotType: @@ -193,13 +196,26 @@ class UserPlotFrame(tk.Frame): self.create_widgets() def create_widgets(self): - pass + self.label = tk.Label(self) + self.label["text"] = "Введите выражение:" + self.label.grid(row=0, column=0, rowspan=1, columnspan=1, sticky=tk.W) + + self.text = tk.Entry(self) + self.text.grid(row=1, column=0, sticky=tk.NSEW) def show(self): self.grid(row=0, column=0, columnspan=1, rowspan=2, sticky=tk.NSEW) + grid_conf(self, 2, 1) def collect_info(self): - return {"status": "ok", "graph": "user"} + expr_text = self.text.get() + try: + expr = parse_expr(expr_text) + plot(expr, show=False) + except: + return {"status": "error", "message": "Не удалось обработать выражение"} + + return {"status": "ok", "graph": "user", "expr": expr} class PointPlotFrame(tk.Frame): @@ -349,6 +365,8 @@ class App(tk.Frame): plot_preset(info) elif info["graph"] == "point": plot_points(info) + elif info["graph"] == "user": + plot_user(info) else: print(info) diff --git a/python-graphics/plotter.py b/python-graphics/plotter.py index b2bc029..6ab8275 100644 --- a/python-graphics/plotter.py +++ b/python-graphics/plotter.py @@ -1,4 +1,5 @@ import matplotlib.pyplot as plt +from sympy.plotting import plot import numpy as np @@ -58,3 +59,8 @@ def plot_points(data): # show the plot plt.show() + + +def plot_user(data): + plot(data["expr"]) + -- cgit v1.2.3