Interaktive Handlung auf Basis von Tkinter und Matplotlib

Sehr geehrte Programmierung,

Ich versuche, eine "interaktive Handlung" auf der Grundlage von Tkinter und pylab.plot durchzuführen, um 1D-Werte zu zeichnen. Die abssissa sind ein 1D-Numpy-Array x und die Ordonaten-Werte befinden sich in einem Multidimensions-Array Y , zB.

 import numpy x = numpy.arange(0.0,3.0,0.01) y = numpy.sin(2*numpy.pi*x) Y = numpy.vstack((y,y/2)) 

Ich möchte y oder y / 2 (die Elemente der Y-Matrix) nach x anzeigen und zwischen ihnen mit 2 Tasten links und rechts wechseln (um auf komplexere Fälle zu gehen). Normalerweise schaffe ich einige Funktionen wie die folgenden, um Graphen zu zeichnen.

 import pylab def graphic_plot(n): fig = pylab.figure(figsize=(8,5)) pylab.plot(x,Y[n,:],'x',markersize=2) pylab.show() 

Um zwei Schaltflächen hinzuzufügen, um den Wert von n Parameter zu ändern, habe ich das ohne Erfolg ausprobiert:

 import Tkinter from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg class App: def __init__(self,master): # Create a container frame = Tkinter.Frame(master) frame.pack() # Create 2 buttons self.button_left = Tkinter.Button(frame,text="<",command=self.decrease) self.button_left.pack(side="left") self.button_right = Tkinter.Button(frame,text=">",command=self.increase) self.button_right.pack(side="left") self.canvas = FigureCanvasTkAgg(fig,master=self) self.canvas.show() def decrease(self): print "Decrease" def increase(self): print "Increase" root = Tkinter.Tk() app = App(root) root.mainloop() 

Kann mir jemand helfen, zu verstehen, wie man solch ein Feature ausführt? Danke vielmals.

One Solution collect form web for “Interaktive Handlung auf Basis von Tkinter und Matplotlib”

Um die y-Werte der Zeile zu ändern, speichern Sie das Objekt, das zurückgegeben wird, wenn Sie es zeichnen ( line, = ax.plot(...) ) und dann line.set_ydata(...) . Um das Diagramm neu zu zeichnen, verwenden Sie canvas.draw() .

Als ein vollständigeres Beispiel basiert auf deinem Code:

 import Tkinter from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg from matplotlib.figure import Figure class App: def __init__(self, master): # Create a container frame = Tkinter.Frame(master) # Create 2 buttons self.button_left = Tkinter.Button(frame,text="< Decrease Slope", command=self.decrease) self.button_left.pack(side="left") self.button_right = Tkinter.Button(frame,text="Increase Slope >", command=self.increase) self.button_right.pack(side="left") fig = Figure() ax = fig.add_subplot(111) self.line, = ax.plot(range(10)) self.canvas = FigureCanvasTkAgg(fig,master=master) self.canvas.show() self.canvas.get_tk_widget().pack(side='top', fill='both', expand=1) frame.pack() def decrease(self): x, y = self.line.get_data() self.line.set_ydata(y - 0.2 * x) self.canvas.draw() def increase(self): x, y = self.line.get_data() self.line.set_ydata(y + 0.2 * x) self.canvas.draw() root = Tkinter.Tk() app = App(root) root.mainloop() 
  • Tkinter matplotlib-Diagramm kann nicht mit Schaltflächen und benutzerdefinierten Daten aktualisiert werden
  • Machen Sie Tkinter Widget nehmen Fokus
  • Tkinter Frame Resize
  • Wie kann man problemlos ascii-art Text drucken?
  • Kann nicht zerstören wx.Dialog in wxpython
  • Tkinter verwaltet meine Event-Loops neben meinem mainloop
  • Warum wird mein Dialogfeld nicht angezeigt, wenn fullscr = True?
  • Tkinter: Wie kann ich eine Taskleiste erstellen?
  • Wie man ein Bild in Tkinter (Python 2.7)
  • Cross Platform, Sprache Agnostic GUI Markup Sprache?
  • Tkinter: Wie kann ich dynamisch ein Widget erstellen, das dann zerstört oder entfernt werden kann?
  • Python ist die beste Programmiersprache der Welt.