Running the python python script below does not show the embedded matplotlib plot. However it also throws no error message. Upon running the script, it is supposed to display a GUI displaying 4 buttons on the left hand side and a realtime graph on the right hand side. The graph receives its input from a text file 'sample_graph_data.txt'
, which is in the same directory as the script. What's wrong in the script and how do I make it work?
#Script begins here
from tkinter import *
from tkinter import messagebox
import matplotlib
matplotlib.use("TkAgg")
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg
from matplotlib import animation
from matplotlib import style
from matplotlib.figure import Figure
PROGRAM_NAME = 'Smart Farm Controller'
style.use('ggplot')fig = Figure(figsize=(5, 30), dpi=100)
a = fig.add_subplot(111)class Controller:def __init__(self, root):self.root = rootself.root.title(PROGRAM_NAME)self.root.protocol('WM_DELETE_WINDOW', self.exit_app)self.init_gui()def create_right_graphs(self):right_frame = Frame(self.root)right_frame.grid(row=2, column=6, sticky=N+E+W+S,padx=2, pady=2)anim = animation.FuncAnimation(fig, self.animate_graph(right_frame),interval=1000)def create_left_switches(self):left_frame = Frame(self.root)left_frame.grid(row=2, column=1, columnspan=6, sticky=N+E+W+S,padx=2, pady=2)led_button = Button(left_frame, text='LED') #command=self.on_led_button_clicked)led_button.config(height=2, width=30)led_button.grid(row=2, column=0, padx=4, pady=8)apump_button = Button(left_frame, text='Air Pump') #command=self.on_apump_button_clicked)apump_button.config(height=2, width=30)apump_button.grid(row=3, column=0, padx=4, pady=8)wpump_res_button = Button(left_frame, text='Reservoir Water Pump')#command=self.on_wpump_res_button_clicked)wpump_res_button.config(height=2, width=30)wpump_res_button.grid(row=4, column=0, padx=4, pady=8)wpump_grow_button = Button(left_frame, text='Grow Bucket Water Pump')#command=self.on_wpump_grow_button_clicked)wpump_grow_button.config(height=2, width=30)wpump_grow_button.grid(row=5, column=0, padx=4, pady=8)def animate_graph(self, right_frame):pullData = open("sample_graph_data.txt","r").read()dataList = pullData.split('\n')xList = []yList = []for eachLine in dataList:if len(eachLine)>1:x, y = eachLine.split(',')xList.append(int(x))yList.append(int(x))a.clear()a.plot(xList, yList)canvas = FigureCanvasTkAgg(fig, right_frame)canvas.show()canvas.get_tk_widget().pack(side=RIGHT, fill=BOTH, expand=True)def init_gui(self):self.create_right_graphs()self.create_left_switches()def exit_app(self):if messagebox.askokcancel("Quit", "Really quit?"):self.root.destroy()if __name__ == '__main__':root = Tk()Controller(root)root.mainloop()