MATPLOTLIB图表中的弹出窗口在TKIN上

2024-04-19 18:53:50 发布

您现在位置:Python中文网/ 问答频道 /正文

当我在tkinter窗口中插入matplotlib图形时,当我启动程序时,会出现额外的弹出窗口。它们不会影响GUI的功能,但有点烦人。在

我已经写了一个基本的脚本来说明这个问题。我通过Spyder查了一下:

import tkinter as tk
import matplotlib
matplotlib.use("TkAgg")

from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg, NavigationToolbar2Tk
from matplotlib.pyplot import figure as Figure
from matplotlib import pyplot as plt

class MyGUI(tk.Tk):
    def __init__(self,master):
        self.f=Figure(figsize=(5,5),dpi=100)
        self.fig, self.ax= plt.subplots()

        self.canvas = FigureCanvasTkAgg(self.fig,master)


        self.toolbar=NavigationToolbar2Tk(self.canvas,master)
        #self.toolbar.update()
        self.canvas._tkcanvas.pack(padx=20, pady=20)

root =tk.Tk()
window=MyGUI(root)
root.mainloop()

当我运行这个,我有三个窗口。一个是根窗口,显示一个空图形和一个工具栏(标记为“tk”)。这是我唯一想要的窗户。然后我得到一个带有工具栏的“Figure 1”窗口和一个带有图形和工具栏的“Figure 2”窗口。My output when I run the demo code

从注释init方法的后半部分来看,问题似乎来自这一部分。在

^{pr2}$

然而,我对面向对象编程和tkinter还很陌生,因此没有足够的经验来找出错误所在。有什么想法吗?在


Tags: fromimportselfmaster图形matplotlibtkinteras
1条回答
网友
1楼 · 发布于 2024-04-19 18:53:50

您正在创建两个图形。其中一个是通过pyplot创建的。不应该试图在自定义GUI中嵌入pyplot图。完全删除pyplot,只创建一个图形。在

import tkinter as tk
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg, NavigationToolbar2Tk
from matplotlib.figure import Figure

class MyGUI(tk.Tk):
    def __init__(self,master):
        self.fig=Figure(figsize=(5,5),dpi=100)
        self.ax = self.fig.add_subplot(111)

        self.canvas = FigureCanvasTkAgg(self.fig,master)

        self.toolbar=NavigationToolbar2Tk(self.canvas,master)
        #self.toolbar.update()
        self.canvas._tkcanvas.pack(padx=20, pady=20)

root =tk.Tk()
window=MyGUI(root)
root.mainloop()

相关问题 更多 >