diff options
| author | Andrew Guschin <saintruler@gmail.com> | 2021-04-06 14:50:56 +0400 |
|---|---|---|
| committer | Andrew Guschin <saintruler@gmail.com> | 2021-04-06 14:50:56 +0400 |
| commit | c763f723095ada3fc1c683929a410ef533cfa93d (patch) | |
| tree | 96d9b81f44f4e4737fe971e9f2773dfd19f06693 | |
| parent | 430a599dcd9454f95c85ab6eb6b72eb15d584b92 (diff) | |
Добавил пользовательские графы
| -rw-r--r-- | python-graphics/main.py | 24 | ||||
| -rw-r--r-- | 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"]) + |