Python Forum
Update plot by <Return> bind with entry widget
Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Update plot by <Return> bind with entry widget
#2
So I got it....
Check it out and let me know if you have some suggestions for improvement.

Cheers...

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

from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg
from matplotlib.figure import Figure
import numpy as np

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

class App:
    def __init__(self, master):
        
        global top_level
        top_level = root
        
        root.geometry("826x862+639+123")
        root.title("interactive plot")
        
        self.TLabel1 = ttk.Label(root)
        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(root)
        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.updatePlot)
        ##########################################################
        ## Frame 2 ###############################################
        self.TLabel1_11 = ttk.Label(root)
        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(root)
        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)
        
        ##########################################################
        ## create plot with default values from Entry widget
        fig = Figure()
        self.subplot1 = fig.add_subplot(111)
        x = np.linspace(0,0.05,500)
        meanVal = float(self.Entry1_1.get())
        y = meanVal*np.sqrt(2)*np.sin(2*np.pi*50*x)
        self.line, = self.subplot1.plot(x,y)
        self.subplot1.grid(True)
        self.subplot1.autoscale(enable=True)
                
        self.canvas = FigureCanvasTkAgg(fig, master=self.Frame2)
        self.canvas.draw()
        self.canvas.get_tk_widget().pack(side='top', fill='both', expand=1)
        ##########################################################
        ## Buttons ###############################################
        
        self.TButton_close = ttk.Button(root)
        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''')
        
    def updatePlot(self, *args):
        x, y = self.line.get_data()
        meanVal = float(self.Entry1_1.get())
        self.subplot1.cla()
        y = meanVal*np.sqrt(2)*np.sin(2*np.pi*50*x)**meanVal
        self.subplot1.plot(x,y)
        self.subplot1.grid(True)
        self.canvas.draw()
    
if __name__ == '__main__':
    root = tk.Tk()
    app = App(root)
    init(root, app)
    root.mainloop()
Reply


Messages In This Thread
RE: Update plot by <Return> bind with entry widget - by Zorro - Mar-09-2019, 12:27 PM

Possibly Related Threads…
Thread Author Replies Views Last Post
  ValueError: could not convert string to float: '' fron Entry Widget russellm44 5 653 Mar-06-2024, 08:42 PM
Last Post: russellm44
  [Tkinter] entry widget DPaul 5 1,521 Jul-28-2023, 02:31 PM
Last Post: deanhystad
  Update exist plot while change upper limit or lower limit SamLiu 1 975 Feb-05-2023, 10:09 AM
Last Post: SamLiu
Exclamation Update Point Coordinates from Mouse Event in a Plot Jguillerm 2 1,288 Jan-10-2023, 07:53 AM
Last Post: Jguillerm
  How to instantly update the plot by getting values from a Scale widget? OLE 20 6,268 May-18-2022, 02:35 AM
Last Post: OLE
  [Tkinter] bind menator01 1 1,249 Apr-15-2022, 08:47 PM
Last Post: menator01
  Tkinter Exit Code based on Entry Widget Nu2Python 6 2,992 Oct-21-2021, 03:01 PM
Last Post: Nu2Python
  [Tkinter] Update variable using tkinter entry methon drSlump 6 5,203 Oct-15-2021, 08:01 AM
Last Post: drSlump
  [Tkinter] bind lambda keypress counter knoxvilles_joker 15 7,770 Apr-19-2021, 01:56 AM
Last Post: knoxvilles_joker
  method to add entries in multi columns entry frames in self widget sudeshna24 2 2,249 Feb-19-2021, 05:24 PM
Last Post: BashBedlam

Forum Jump:

User Panel Messages

Announcements
Announcement #1 8/1/2020
Announcement #2 8/2/2020
Announcement #3 8/6/2020