2015-05-19 86 views
1

我對Python相當陌生。我寫了下面的代碼,當按下「繪圖」按鈕時,它應該顯示一個嵌入式繪圖。代碼運行沒有任何錯誤;但是我沒有得到任何數字。我應該補充一點,繪圖儀類有意地使用了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() 

我很感激任何幫助。

+1

你是什麼意思「我沒有數字」?你的意思是你有灰色地帶嗎?因爲這就是我得到的,這只是因爲你永遠不會調用'self.plot_figure',它實際上會創建(子)圖並繪製數據。 – fhdrsdg

+0

傻我,謝謝:) – Sepehr

回答

0

我真的不明白你想什麼在這裏實現,但你plot_figure方法不會被調用,因此不存在插曲表明,你只需要一個空白的畫布。

如果你在繪圖之前調用你的方法,你將得到你的數字。

def show_plot(self): 
    self.canvas = FigureCanvasTkAgg(self.f, master=root) 
    self.plot_figure() 
    self.canvas.show() 
    ...