我是Python的新手。我编写了以下代码,用于在按下“Plot”按钮时显示嵌入式绘图。代码运行没有任何错误;但是我得不到数字。我应该补充一点,Plotter类故意有两种plot_figure和show_plot方法。
#!/usr/bin/env python
import matplotlib
matplotlib.use('TkAgg')
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg, NavigationToolbar2TkAgg
from matplotlib.figure import Figure
import sys
if sys.version_info[0] < 3:
import Tkinter as Tk
else:
import tkinter as Tk
root = Tk.Tk()
root.wm_title("Embedding in TK")
class Plotter(object):
def __init__(self):
self.f = Figure()
def plot_figure(self):
self.figarray = self.f.add_subplot(111)
self.figarray.plot((1,2,3,4),(1,2,3,4))
return self.f
def show_plot(self):
self.canvas = FigureCanvasTkAgg(self.f, master=root)
self.canvas.show()
self.canvas.get_tk_widget().pack(side=Tk.TOP, fill=Tk.BOTH, expand=1)
self.toolbar = NavigationToolbar2TkAgg(self.canvas, root )
self.toolbar.update()
self.canvas._tkcanvas.pack(side=Tk.TOP, fill=Tk.BOTH, expand=1)
plot1 = Plotter()
button = Tk.Button(master=root, text='Plot', command=plot1.show_plot)
button.pack(side=Tk.BOTTOM)
Tk.mainloop()
我感谢任何帮助。
答案 0 :(得分:0)
我并没有真正得到你想要实现的目标,但你的plot_figure方法永远不会被调用,因此没有要显示的子图,你只有一个空画布。
如果你在绘制情节之前调用你的方法,你将得到你的数据。
def show_plot(self):
self.canvas = FigureCanvasTkAgg(self.f, master=root)
self.plot_figure()
self.canvas.show()
...