我正在尝试使用matplotlib实现tkinter复选按钮,以更新绘图并仅显示所选绘图。
但是,复选按钮不会更改变量。
我尝试了不同版本的python,并将大多数代码简化为简单的tkinter和matplotlib集成,没有任何运气。
# 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()
我正在使用:
Python: 3.7.3
Matplotlib: 3.1.1
我希望打印输出随着用户单击检查按钮而改变。
请随时将我指向在线资源。
答案 0 :(得分:1)
您需要使用matplotlib.Figure
而不是pyplot.figure
。
您也有两个具有相同名称的按钮,但这不是问题。
以下代码将matplotlib.Figure
和subplot
和toolbar
嵌入到具有tkinter.window
和{{1 }}。我删除了令我烦恼的check_button
,但您可以放回去,代码没有错。
quit_button