79402719

Date: 2025-01-31 12:25:26
Score: 3.5
Natty:
Report link

Got the solution to the problem in the code. Still, I don't understand what is the logic behind it. Following are the modifications to the codes: (Thanks in advance for any further modification or comment )

from tkinter import *
import tkinter as tk
from PIL import ImageTk,Image
from matplotlib.backends.backend_tkagg import (FigureCanvasTkAgg,NavigationToolbar2Tk)
import matplotlib.pyplot as plt
from matplotlib.figure import Figure

# Variables for line plots
x= [1,2,3,4]
y=[4,5,6,7]

x1=[5,6,7,3,1]
y1=[8,9,10,2,4]

x2=[1,4,2,5,9,3]
y2=[2,5,1,6,1,4]

#-------------------------------------
# MODIFICATION TO EARLIER CODES

# the figure that will contain the plot 
fig1 = Figure(figsize = (5, 5),dpi = 100)
# list of squares 
# adding the subplot 
plot1 = fig1.add_subplot(111)
# plotting the graph 
plot1.plot(x,y)


# the figure that will contain the plot 
fig2 = Figure(figsize = (5, 5),dpi = 100)
# list of squares 

# adding the subplot 
plot2 = fig2.add_subplot(111)
# plotting the graph 
plot2.plot(x1,y1)

# the figure that will contain the plot 
fig3 = Figure(figsize = (5, 5),dpi = 100)
# list of squares 

# adding the subplot 
plot3 = fig3.add_subplot(111)
# plotting the graph 
plot3.plot(x2,y2)

#-------------------------------------
#Earlier part of the code which is replaced by above    
# # Creating figures
# fig1,ax1 = plt.subplots()
# ax1.plot(x, y, marker='o', label="Data Points",color='red')
# ax1.set_title("Basic Components of Matplotlib Figure")
# ax1.set_xlabel("X-Axis") 
# ax1.set_ylabel("Y-Axis")
# fig1.tight_layout()
# # plt.show()

# fig2,ax2 = plt.subplots()
# ax2.plot(x1, y1, marker='o', label="Data Points",color='green')
# ax2.set_title("Basic Components of Matplotlib Figure")
# ax2.set_xlabel("X-Axis") 
# ax2.set_ylabel("Y-Axis")
# fig2.tight_layout()

# fig3,ax3 = plt.subplots()
# ax3.plot(x2, y2, marker='o', label="Data Points",color='orange')
# ax3.set_title("Basic Components of Matplotlib Figure")
# ax3.set_xlabel("X-Axis") 
# ax3.set_ylabel("Y-Axis")
# fig3.tight_layout()
#-------------------------------------

fig_list = [fig1,fig2,fig3]



def frwrd(number):
    global Fw_Btn
    global Bck_Btn
    global exit_btn
    global frame1
    global Fig_Canvas
    frame1.destroy()
       
    #  Creating a frame in root
    frame1= Frame(root,bg= "green")
    frame1.grid(row=1,column=0,columnspan=3,padx=10,pady=10,sticky='nsew')    

    # Create a figure canvas again
    Fig_Canvas = FigureCanvasTkAgg(fig_list[number-1],master = frame1)
    Fig_Canvas.draw()
    Fig_Canvas.get_tk_widget().grid(row=0,column=0)





    #  Creating buttons again
    Fw_Btn = Button(root, text = '>>',command=lambda:frwrd(number + 1))
    Bck_Btn = Button(root, text = '<<',command= lambda: back(number - 1))
    if number ==3:
        Fw_Btn = Button(root, text = '>>',state=DISABLED)
    
    Fw_Btn.grid(row=0,column=2,sticky='nswe')
    Bck_Btn.grid(row=0,column=0,sticky='nswe')
    exit_btn.grid(row=0,column=1,sticky='nswe')
    

def back(number):
    global Fw_Btn
    global Bck_Btn
    global exit_btn
    global frame1
    global Fig_Canvas
    
    
    frame1.destroy()
    
    #  Creating a frame inplace of root
    frame1= Frame(root,bg= "green")    
    frame1.grid(row=1,column=0,columnspan=3,padx=10,pady=10,sticky='nsew')

    # Create a figure canvas again
    Fig_Canvas = FigureCanvasTkAgg(fig_list[number-1],master = frame1)
    Fig_Canvas.draw()    
    Fig_Canvas.get_tk_widget().grid(row=0,column=0) 
    # Creating buttons again
    Fw_Btn = Button(root, text = '>>',command=lambda:frwrd(number + 1))
    Bck_Btn = Button(root, text = '<<',command= lambda: back(number - 1))
    if number ==1:
        Bck_Btn = Button(root, text = '<<',state=DISABLED)   
    
    Fw_Btn.grid(row=0,column=2,sticky='nswe')
    Bck_Btn.grid(row=0,column=0,sticky='nswe')
    exit_btn.grid(row=0,column=1,sticky='nswe')
    

# root of tkinter
root = Tk()
root.geometry('700x600')

# Buttons
Fw_Btn = Button(root, text = '>>',command=lambda: frwrd(2))
Bck_Btn = Button(root, text = '<<',command= back,state=DISABLED)
exit_btn = Button(root,text = 'Exit',command=  root.quit)

# Placing buttons
Bck_Btn.grid(row=0,column=0,sticky='nswe')
exit_btn.grid(row=0,column=1,sticky='nswe')
Fw_Btn.grid(row=0,column=2,sticky='nswe')

#  Creating a frame in root
frame1= Frame(root,bg= "green")
frame1.grid(row=1,column=0,columnspan=3,padx=10,pady=10,sticky='nsew')

# Creating a figure canvas
Fig_Canvas = FigureCanvasTkAgg(fig1,master = frame1)
Fig_Canvas.draw()
Fig_Canvas.get_tk_widget().grid(row=0,column=0)

# Configureing the root
root.grid_columnconfigure([0,1,2],weight=1)
root.grid_rowconfigure(1,weight=1)
root.mainloop()
Reasons:
  • Blacklisted phrase (0.5): Thanks
  • RegEx Blacklisted phrase (3): Thanks in advance
  • Long answer (-1):
  • Has code block (-0.5):
  • Self-answer (0.5):
  • Low reputation (1):
Posted by: pranjal