Placing plot on Tkinter main window in Python Placing plot on Tkinter main window in Python tkinter tkinter

Placing plot on Tkinter main window in Python


Main changes:

  1. Using matplolib.figure instead of matplotlib.pyplot (and renaming all related functions)
  2. Adding a self.window variable
  3. Using pack() everywhere (you cannot mix grid and pack in one container.)

Result:

__author__ = 'Dania'import matplotlibmatplotlib.use('TkAgg')import numpy as npfrom matplotlib.backends.backend_tkagg import FigureCanvasTkAggfrom matplotlib.figure import Figurefrom Tkinter import *class mclass:    def __init__(self,  window):        self.window = window        self.box = Entry(window)        self.button = Button (window, text="check", command=self.plot)        self.box.pack ()        self.button.pack()    def plot (self):        x=np.array ([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])        v= np.array ([16,16.31925,17.6394,16.003,17.2861,17.3131,19.1259,18.9694,22.0003,22.81226])        p= np.array ([16.23697,     17.31653,     17.22094,     17.68631,     17.73641 ,    18.6368,            19.32125,     19.31756 ,    21.20247  ,   22.41444   ,  22.11718  ,   22.12453])        fig = Figure(figsize=(6,6))        a = fig.add_subplot(111)        a.scatter(v,x,color='red')        a.plot(p, range(2 +max(x)),color='blue')        a.invert_yaxis()        a.set_title ("Estimation Grid", fontsize=16)        a.set_ylabel("Y", fontsize=14)        a.set_xlabel("X", fontsize=14)        canvas = FigureCanvasTkAgg(fig, master=self.window)        canvas.get_tk_widget().pack()        canvas.draw()window= Tk()start= mclass (window)window.mainloop()