Lieber programmming communauty,Interaktive Handlung basiert auf Tkinter und matplotlib
Ich versuche, eine „interaktive Handlung“ auf Tkinter und pylab.plot um 1D Werte zu plotten Basis auszuführen. Die Absssisse ist ein 1D-Nummernfeld x
, und die Ordonatenwerte sind in einem Multidimensionsfeld Y
, z.
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 mag y anzuzeigen oder y/2 (die Elemente der Matrix Y) nach x und Wechsel zwischen ihnen mit 2 Tasten links und rechts (um komplexere Fälle zu gehen). Normalerweise erstelle 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()
zwei Tasten So fügen Sie den Wert von n
Parameter zu ändern, ich habe dies ohne Erfolg versucht:
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 diese Art von Funktion zu erfüllen? Danke vielmals.
Welche Fehler erhalten Sie? Könnten Sie näher ausführen "Ich habe das ohne Erfolg versucht"? – mgilson
Erstens kann ich Grafik und Schaltflächen nicht in ein einzelnes Fenster einschließen. Zweitens weiß ich nicht, wie man den Wert von 'n' mit den Tasten ändert. Drittens, ich weiß nicht, wie man den Graphen "auffrischt", nachdem man auf den Knopf geklickt hat. – user1187727
Ich weiß nicht, über einige von denen, aber um die Leinwand zu zeigen, müssen Sie es packen. Etwas herum googeln, Es scheint, als ob du willst: 'canvas.get_tk_widget() .pack (side = Tkinter.TOP, fill = Tkinter.BOTH, expand = 1)' - oder wie auch immer du es packen willst. (Ich benutze normalerweise .grid(), also bin ich mir nicht sicher, welche sinnvollen Optionen zu übergeben sind.) Packet()) – mgilson