könntet ihr mir als programmierneuling bei diesem kleinen problem helfen?
es geht um das löschen eines angezeigten plots in einem pyplot in einem gtk window. ich habe dafür das programm versucht, von so vielen unnötigen parametern zu befreien wie möglich, damit ihr das programm leichter überblicken könnt.
der befehl zum löschen eines pyplotgraphen heißt ja soviel ich weiß: name.cla() (CLear Axis)
zum einfachen ausprobieren habe ich den befehl innerhalb der __init__ umgebung direkt ausprobiert und es funktioniert. auch nach den show()-befehl löscht cla() den gezeichneten graphen. wenn ich aber das löschen des graphen erst durch einen button auslösen will, dann funktioniert es komischerweise nicht und es wird auch keine fehlermeldung gezeigt. im folgenden das möglichst verkleinerte program.
der befehl cla() ist an beiden stellen (in der ___init__ umgebung zum ausprobieren, und in der funktion des buttons) auskommentiert. Ihr könnt ihn dann an beiden stellen leicht ausprobieren
könnt ihr mir bei meinem anfängerroblem helfen?
vielen dank
Spiky
code:
Code: Alles auswählen
import pygtk
import gtk
import numpy as np
import pylab as plt
from matplotlib import *
from matplotlib.figure import Figure as MPL_FIG
from matplotlib.backends.backend_gtkagg import FigureCanvasGTKAgg as FigureCanvas
from matplotlib.backends.backend_gtkagg import NavigationToolbar2GTKAgg as NavigationToolbar
from matplotlib.backend_bases import key_press_handler
class lookylooky():
def delete(self, widget, event=None):
gtk.main_quit()
return False
def look_at_file(self,widget):
print 'hallo flummi'
#self.timeplot_axes.cla()
def __init__(self):
window=gtk.Window(gtk.WINDOW_TOPLEVEL)
window.set_size_request(800,600) #sice in x-richtung und in y-richtung
window.connect('delete_event', self.delete)
table=gtk.Table(2,2,True) #schritte nach unten und schritte nach oben
window.add(table)
button_load=gtk.Button('clean')
button_load.connect('clicked', self.look_at_file)
table.attach(button_load, 1,2,1,2) #der butten geht von position 9 bis 10 (x-koordinate) und von position 0 bis 1 (y-koordinate)
button_load.show()
self.timeplot_fig = MPL_FIG(figsize=(5,4), dpi=100)
self.timeplot_axes = self.timeplot_fig.add_subplot(111)
self.timeplot_channel = np.arange(0.0,3.0,0.01)
self.timeplot_signal = np.sin(2*np.pi*self.timeplot_channel)
self.timeplot_axes.plot(self.timeplot_channel,self.timeplot_signal, 'r')
self.timeplot_plot = FigureCanvas(self.timeplot_fig)
self.timeplot_toolbar = NavigationToolbar(self.timeplot_plot, table)
table.attach(self.timeplot_plot, 0,1,0,1)
self.timeplot_plot.show()
table.show()
window.show()
#self.timeplot_axes.cla()
def main():
gtk.main()
return 0
horst=lookylooky()
main()