Thanks! I tried that and I also set the canvas attached to the frame. That did not work, so I tried to also create a new frame attached to the canvas and attached to canvas with graph to that new frame.
And it is still not working, I really don't understand why
And it is still not working, I really don't understand why
import tkinter as tk import numpy as np from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg from matplotlib.figure import Figure class Example: def __init__(self, master): self.clicks = 0 self.master = master self.frame= tk.Frame(master,width=600,height=400,background="green") self.canv = tk.Canvas(self.frame, width=600, height=400,background="blue",scrollregion=(0,0,2000,2000)) button = tk.Button(master,text='click',command= lambda: self.select(master)) self.scrollY = tk.Scrollbar(self.frame, orient=tk.VERTICAL, command=self.canv.yview) self.scrollX = tk.Scrollbar(self.frame, orient=tk.HORIZONTAL, command=self.canv.xview) self.canv['xscrollcommand'] = self.scrollX.set self.canv['yscrollcommand'] = self.scrollY.set self.frame.grid(row=0,column=0,rowspan=3) self.scrollY.grid(row=3, column=1, sticky=tk.N+tk.S) button.grid(row=2,column=0,padx=10,sticky=tk.NW) self.scrollX.grid(row=4, column=0, sticky=tk.E+tk.W) self.canv.grid(row=3, column=0) self.framesub = tk.Frame(self.canv) self.framesub.bind("<Configure>",self.canv.configure(scrollregion=self.canv.bbox("all"),width=200,height=200)) def select(self,master): self.clicks +=1 shape = np.random.randint(0,2,[5,5]) lon = np.arange(5) lat = np.arange(5) fig = Figure(figsize=(4,4)) ax = fig.add_subplot(111) c = ax.pcolor(lon,lat,shape) fig.colorbar(c,ax=ax,fraction=0.046,pad=0.04) canvas1= FigureCanvasTkAgg(fig,self.framesub) #framesub.grid(row=0,column=self.clicks) canvas1.get_tk_widget().grid(row=0,column=0) if __name__ == "__main__": root=tk.Tk() Example(root) root.mainloop()