gpt4 book ai didi

python - 如何将 tkinter 与 matplotlib checkbutton 集成以更改变量?

转载 作者:行者123 更新时间:2023-12-01 00:45:12 25 4
gpt4 key购买 nike

我正在尝试使用 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

我希望当用户单击复选按钮时打印输出会发生变化。

请随时向我指出在线资源。

最佳答案

您需要使用matplotlib.Figure而不是pyplot.figure
您还有两个同名的按钮,但这不是问题。

以下代码在 tkinter.window 中嵌入一个 matplotlib.Figure,以及一个子图 和一个工具栏 code> 具有一个 check_button 和一个 quit_button。我删除了我觉得烦人的 messagebox,但你可以把它放回去,代码没有任何问题。

from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg, NavigationToolbar2Tk
from tkinter import messagebox, Button, Tk, BooleanVar
from tkinter.ttk import Checkbutton
from matplotlib.figure import Figure
import matplotlib
matplotlib.use('TkAgg')


class GUI:

fig = 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.var = BooleanVar()
self.var.set(True)
self.check_button = Checkbutton(
self.root, variable=self.var, text='Direvative', command=self.cb)
self.check_button.pack(side='left')

self.quit_button = Button(master=self.root, text='Quit', command=self._quit)
self.quit_button.pack(side='right')

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)

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):
self.root.destroy()


if __name__ == '__main__':
root = Tk()
mod = GUI(root)
root.mainloop()

关于python - 如何将 tkinter 与 matplotlib checkbutton 集成以更改变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57032388/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com