Hoi Stefanie,
kann mich lunar nur anschließen: Es hängt sehr davon ab, was genau Du erreichen willst. Ich habe z. B. ein Plotting-Programm geschrieben (für eine bes. Form von Daten - hier nicht wichtig) und da habe ich folgende Methode für den Hauptframe:
Code: Alles auswählen
def OnResetProgram(self, event=None):
"""
Will flush the buffer and reset the program
"""
self.active_datasets = []
self.fit_data = None
self.modus = None
self.log_intensity = True
self.log_both = False
...
#disable the following menu items:
itemlist = (
("Evaluate", "Scale I(q) for plotting"),
("Evaluate", "Kratky Plot", False),
...
("View", "Log Intensity"),
("View", "Log both"),
...
)
for itemt in itemlist:
id = self.GetMenuBar().FindMenuItem(itemt[0],itemt[1])
self.GetMenuBar().Enable(id,False)
try:
self.GetMenuBar().Check(id,itemt[2]) #uncheck if 'checkable'
except: pass
self.plot_data()
self.canvas.draw()
self.toolbar.update()
Was geschieht ist folgendes: Instanzen des Hauptframes werden "zurückgesetzt" und alles, was der Nutzer evtl. mit Menüs gemacht haben könnte, ebenfalls. Z. B. könnte ja ein Menüeintrag mit einem "Checkhäckhen" versehen sein, da aber das bei mir z. T. kontextabhängig ist und nur geht, wenn vorher der Nutzer des Programms auch die Daten bereitet hat, wird das alles ohne zu fragen "entchecked".
Außerdem werden Methoden aufgerufen, die dafür sorgen, daß die Toolbar und der Fensterbereich, in dem geplottet wird, anschließend "sauber" sind.
Wenn ich mich richtig erinnere, wird Dein Programm durchaus ähnliche Aspekte haben: Daten löschen, Fenster säubern, etc. etc.
Du siehst: Das ist u. U. mit Aufwand verbunden.
HTH
Christian