I am trying to get tkinter check button implemented with matplotlib in order to update the plot and show the selected plots only.
However, the check button wouldn't change the variable.
I've tried different versions of python and stripping down most of my code to just simple tkinter and matplotlib integration, without any luck.
# coding: utf-8
# usr/bin/python37
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg, NavigationToolbar2Tk
from tkinter import messagebox, Button, Tk, BooleanVar
from tkinter.ttk import Checkbutton
import matplotlib.pyplot as plt
import matplotlib
matplotlib.use('TkAgg')
class GUI:
fig = plt.figure()
sub = fig.add_subplot(1, 1, 1)
def __init__(self, root):
self.root = root
self.root.title("Testing")
self.setupTk()
def setupTk(self):
self.canvas = FigureCanvasTkAgg(self.fig, master=self.root)
self.canvas.get_tk_widget().pack(side='top', fill='both', expand=1)
self.canvas._tkcanvas.pack(side='top', fill='both', expand=1)
'''
Problem
'''
self.var = BooleanVar()
self.var.set(True)
self.button = Checkbutton(
self.root, variable=self.var, text='Direvative', command=self.cb)
self.button.pack(side='left')
'''
/Problem
'''
self.button = Button(master=self.root, text='Quit', command=self._quit)
self.button.pack(side='right')
self.toolbar = NavigationToolbar2Tk(self.canvas, self.root)
self.toolbar.update()
self.root.protocol("WM_DELETE_WINDOW", self._quit)
def cb(self):
print(self.var.get())
def _quit(self):
if messagebox.askquestion('Exit Application', 'Are you sure you want to exit the application', icon='warning') == 'yes':
self.root.quit()
self.root.destroy()
if __name__ == '__main__':
root = Tk()
mod = GUI(root)
root.mainloop()
I am using:
Python: 3.7.3
Matplotlib: 3.1.1
I expect the printout to change as the user clicks the check button.
Please feel free to point me towards resources online.