Mar-08-2019, 10:41 AM
Hey guys.. I need short hint:
I want to update my matplotlib plot after the user enters a number in Entry widget and hint <Return>.
I can create a default plot with default values, but somehow the graph does not update after changing the number and hitting <Return> again.
To check, if the bind works, I've created the printEntry() method. It will be called after calling the method to plot the graph. And this works!
Any suggestions ???
Thx you in advance.....
Here my code:
I want to update my matplotlib plot after the user enters a number in Entry widget and hint <Return>.
I can create a default plot with default values, but somehow the graph does not update after changing the number and hitting <Return> again.
To check, if the bind works, I've created the printEntry() method. It will be called after calling the method to plot the graph. And this works!
Any suggestions ???
Thx you in advance.....
Here my code:
try:
import Tkinter as tk
except ImportError:
import tkinter as tk
try:
import ttk
py3 = False
except ImportError:
import tkinter.ttk as ttk
py3 = True
import numpy as np
import matplotlib
matplotlib.use("TkAgg")
from matplotlib.figure import Figure
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg
def init(top, gui, *args, **kwargs):
global w, top_level, root
w = gui
top_level = top
root = top
def destroy_window():
# Function which closes the window.
global top_level
top_level.destroy()
top_level = None
def vp_start_gui():
'''Starting point when module is the main routine.'''
global val, w, root
root = tk.Tk()
top = Toplevel1 (root)
init(root, top)
root.mainloop()
class Toplevel1:
def __init__(self, top=None):
self.style = ttk.Style()
self.style.configure('.',font="TkDefaultFont")
top.geometry("826x862+639+123")
top.title("interactive plot")
self.TLabel1 = ttk.Label(top)
self.TLabel1.place(relx=0.024, rely=0.023, height=24, width=83)
self.TLabel1.configure(relief='flat')
self.TLabel1.configure(text='''Input value''')
## Frame 1 #############################################
self.Frame1 = tk.Frame(top)
self.Frame1.place(relx=0.012, rely=0.058, relheight=0.102
, relwidth=0.975)
self.Frame1.configure(relief='groove')
self.Frame1.configure(borderwidth="2")
self.Frame1.configure(highlightcolor="black")
self.Frame1.configure(width=805)
self.Entry1_1 = tk.Entry(self.Frame1)
self.Entry1_1.place(relx=0.025, rely=0.114,height=35, relwidth=0.124)
self.Entry1_1.configure(highlightcolor="black")
self.Entry1_1.configure(selectforeground="black")
self.Entry1_1.insert(0,1)
self.Entry1_1.bind("<Return>", self.matplotCanvas)
##########################################################
## Frame 2 #############################################
self.TLabel1_11 = ttk.Label(top)
self.TLabel1_11.place(relx=0.024, rely=0.174, height=24, width=83)
self.TLabel1_11.configure(relief='flat')
self.TLabel1_11.configure(text='''Plot''')
self.Frame2 = tk.Frame(top)
self.Frame2.place(relx=0.012, rely=0.209, relheight=0.58, relwidth=0.969)
self.Frame2.configure(relief='groove')
self.Frame2.configure(borderwidth="2")
self.Frame2.configure(relief='groove')
self.Frame2.configure(highlightcolor="black")
self.Frame2.configure(width=805)
###########################################################
self.TButton_close = ttk.Button(top)
self.TButton_close.place(relx=0.86, rely=0.951, height=25, width=96)
self.TButton_close.configure(command=destroy_window)
self.TButton_close.configure(takefocus="")
self.TButton_close.configure(text='''Close''')
self.matplotCanvas()
def matplotCanvas(self, *args):
x = np.linspace(0,0.05,num=500)
y = float(self.Entry1_1.get())*x**2
self.printEntry()
f = Figure(figsize = (5,5), dpi=100)
a = f.add_subplot(111)
a.clear()
a.plot(x,y)
a.grid(True)
canvas = FigureCanvasTkAgg(f, self.Frame2)
canvas.get_tk_widget().pack(side=tk.TOP, fill=tk.BOTH, expand=True)
def printEntry(self, *args):
print(float(self.Entry1_1.get()))
if __name__ == '__main__':
vp_start_gui()
