2016-07-25 5 views
0

Значение на участке не будет обновлено. В моем собственном классе у меня есть один интегрированный из наших друзей сообщества. В Plot не отображаются сгенерированные значения! Как включить автомасштабирование? Кроме того, мне хотелось бы, чтобы ось 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

Смежные вопросы