2016-07-25 10 views
0

Der Wert für das Diagramm wird nicht aktualisiert. In meiner eigenen Klasse habe ich einen von unseren Community-Freunden integriert.Der Plot zeigt keine generierten Werte an! Wie kann ich die Autoscale einschalten? Außerdem möchte ich, dass die X-Achse während der Ausführung des Programms verschoben wird. Zum Beispiel zeigt es immer die letzten 10 Sekunden an.Der Wert für das Diagramm wurde nicht aktualisiert

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() 

und Code von unseren Freunden: https://stackoverflow.com/a/15742183/6403009

Antwort

0

Ich war Blick auf den Code, ist die Linie "plt.subplots()" richtig? und da ist eine andere Sache, in der folgenden Zeile schreibst du: "self.lines, =" vielleicht sollte das Komma aus sein, kannst du es bestätigen? Viel Glück!

+0

Kommentare werden im obigen Kommentarbereich geschrieben, nicht im Antwortabschnitt. –

+0

@ParvizKarimli Ricardo hat nicht genug Reputation um Kommentare zu schreiben. Das stimmt, ich stimme dir zu. Dies sollte ein Kommentar sein, keine Antwort. – Jokab

Verwandte Themen