为什么我不能在课堂上使用matplotlib和tkinter

时间:2020-06-14 22:40:27

标签: python tkinter matplotlib-widget

我在同时使用matplotlib和tkinter时遇到问题。 我正在尝试使用单选按钮创建Matplot图形并将其嵌入到tkinter中 遵循Internet上的一些示例和文档,我创建了以下代码:

import random
import matplotlib
import tkinter as Tk
import matplotlib.pyplot as plt
from matplotlib.widgets import RadioButtons
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg

matplotlib.use('TkAgg')

root = Tk.Tk()
root.wm_title("Embedding in TK")

class TKInterGUI():

    def __init__(self, master,fig):

        self.fig = fig
        self.master = master

    def test(self):
        canvas = FigureCanvasTkAgg(self.fig[0], self.master)
        canvas.get_tk_widget().pack(side=Tk.TOP, fill=Tk.BOTH, expand=1)
        ax = self.fig[0].add_axes([0.10, 0.7, 0.15, 0.15],facecolor='yellow')
        r = RadioButtons(ax, ('2 Hz', '4 Hz', '0 Hz'))

fig = []
fig.append(plt.Figure(figsize=(5,5), dpi=100))
my_gui = TKInterGUI(root,fig)
my_gui.test()
Tk.mainloop()

此代码生成图形和所需的单选按钮。但是单选按钮不起作用。他们变得完全没有反应。 现在,如果我将单选按钮代码更改为像下面的代码所示的主程序,则一切正常:

import random
import matplotlib
import tkinter as Tk
import matplotlib.pyplot as plt
from matplotlib.widgets import RadioButtons
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg

matplotlib.use('TkAgg')

root = Tk.Tk()
root.wm_title("Embedding in TK")

class TKInterGUI():

    def __init__(self, master,fig):

        self.fig = fig
        self.master = master

    def test(self):
        canvas = FigureCanvasTkAgg(self.fig[0], self.master)
        canvas.get_tk_widget().pack(side=Tk.TOP, fill=Tk.BOTH, expand=1)

fig = []
fig.append(plt.Figure(figsize=(5,5), dpi=100))
my_gui = TKInterGUI(root,fig)
my_gui.test()
ax = fig[0].add_axes([0.10, 0.7, 0.15, 0.15],facecolor='yellow')
r = RadioButtons(ax, ('2 Hz', '4 Hz', '0 Hz'))

Tk.mainloop()

谁能解释为什么第一个代码不起作用,而第二个代码不起作用?

0 个答案:

没有答案
相关问题