summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Guschin <saintruler@gmail.com>2021-04-06 14:50:56 +0400
committerAndrew Guschin <saintruler@gmail.com>2021-04-06 14:50:56 +0400
commitc763f723095ada3fc1c683929a410ef533cfa93d (patch)
tree96d9b81f44f4e4737fe971e9f2773dfd19f06693
parent430a599dcd9454f95c85ab6eb6b72eb15d584b92 (diff)
Добавил пользовательские графы
-rw-r--r--python-graphics/main.py24
-rw-r--r--python-graphics/plotter.py6
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"])
+