【发布时间】:2019-07-28 05:58:04
【问题描述】:
当我在我的 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”)。这是我想要的唯一窗口。然后我得到一个带有工具栏的“图 1”窗口和一个带有图形和工具栏的“图 2”窗口。
从注释掉init方法的后半部分,看来问题出在这部分。
self.f=Figure(figsize=(5,5),dpi=100)
self.fig, self.ax= plt.subplots()
self.canvas = FigureCanvasTkAgg(self.fig,master)
但是,我对面向对象编程和 tkinter 还很陌生,因此没有足够的经验来弄清楚错误是什么。有什么想法吗?
【问题讨论】:
标签: python matplotlib tkinter