2016-07-25 16 views
0

繪圖上的值不會更新。在我的班級中,我有一個來自我們社區朋友的綜合體。情節不會顯示生成的值!我怎樣才能打開自動縮放?此外,我希望在程序執行期間移動x軸。例如,它總是顯示最後10秒。繪圖上的值未更新

import Tkinter,time 

root = Tkinter.Tk 
class InterfaceApp(root): 
    def __init__ (self, parent): 
     root.__init__(self,parent) 
     self.parent = parent 
     self.initialize() 
     self.on_stop() 

    def initialize(self): 
     self.min_x = 0 
     self.max_x = 10 
     self.xdata = [] 
     self.ydata = [] 
     self.on_launch() 

    # Frame and LabelFrame create 
     frInst = Tkinter.Frame(bg='', colormap='new') 
     frBut = Tkinter.Frame(bg='', colormap='new') 
     grInst = Tkinter.LabelFrame(frInst, text='Choose an Instruments', padx=5, pady=5) 
     grSet = Tkinter.LabelFrame(frInst, text='Settings', padx=5, pady=7) 

    # Create Settings and Buttons 

     self.but_start = Tkinter.Button(frBut, text='Start', command=lambda: self.on_start(), width=10) 
     self.but_stop = Tkinter.Button(frBut, text='Stop', command=lambda: self.on_stop(), width=10) 
     self.but_quit = Tkinter.Button(frBut, text='Quit', command=lambda: self.on_quit(), width=10) 

    # Grid 
     frInst.grid(row=0) 
     frBut.grid(row=3) 
     grInst.grid(row=0) 
     grSet.grid(row=0, column=1) 

     # Power Supply Grid 
     self.but_start.grid(row=2, column=1, sticky='W') 
     self.but_stop.grid(row=2, column=2, sticky='W') 
     self.but_quit.grid(row=2, column=3, sticky='W') 


    # Function 
    def on_quit(self): 
     self.W_kSMU("output off") 
     self.quit() 
     self.destroy() 

    def on_start(self): 
     self.running = True 
     self.but_start.configure(state='disabled') 
     self.but_stop.configure(state='normal') 
     self.Run() 

    def Run(self): 
     self.timer = randint(0,100) 
     self.t_volt = randint(0,100) 
     self.xdata.append(self.timer) 
     self.ydata.append(self.t_volt) 
     self.on_running(self.xdata, self.ydata) 
     time.sleep(1) 
     self.read_ps = 3 

     if self.running: 
      self.after(5000, self.Run) 

    def on_launch(self): 
     #Set up plot 
     self.figure, self.ax = plt.subplots() 
     self.lines, = self.ax.plot([],[], 'o') 
     #Autoscale on unknown axis and known lims on the other 
     self.ax.set_autoscaley_on(True) 
     self.ax.set_xlim(self.min_x, self.max_x) 
     #Other stuff 
     self.ax.grid() 

    def on_running(self, xdata, ydata): 
     #Update data (with the new _and_ the old points) 
     self.lines.set_xdata(xdata) 
     self.lines.set_ydata(ydata) 
     #Need both of these in order to rescale 
     self.ax.relim() 
     self.ax.autoscale_view() 
     #We need to draw *and* flush 
     self.figure.canvas.draw() 
     self.figure.canvas.flush_events() 

    def on_stop(self): 
     self.but_start.configure(state='normal') 
     self.but_stop.configure(state='disabled') 
     self.running = False 

if __name__ == "__main__": 
    app = InterfaceApp(None) 
    app.title("MPW") 
    app.mainloop() 

和代碼從我們的朋友:https://stackoverflow.com/a/15742183/6403009

回答

0

我一直在尋找的代碼,是行 「plt.subplots()」 是否正確?還有另外一件事,在下面這行中,你寫道:「self.lines,=」也許逗號應該關閉,你能證實嗎? 祝你好運!

+0

評論寫在上面的評論部分,而不是在答案部分。 –

+0

@ParvizKarimli裏卡多沒有足夠的聲望發表評論。這就是說,我同意你的看法。這應該是一個評論,而不是一個答案。 – Jokab