2016-07-25 10 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 Ricardoはコメントを投稿するのに十分な評判を持っていません。それは、私はあなたに同意した。これはコメントでなければならず、答えではありません。 – Jokab

関連する問題