Programm reset ohne Neustart

Plattformunabhängige GUIs mit wxWidgets.
Antworten
ete
User
Beiträge: 218
Registriert: Montag 19. Februar 2007, 13:19
Kontaktdaten:

Donnerstag 3. Januar 2008, 13:04

Hallo!

Ich würde gern ein Button einfügen, über den man das gestartete Programm wieder in den Grundzustand zurück versetzt ohne es neu zu starten.

Gibt es dafür eine Lösung?

Gruss

Stefanie
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5554
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Telfs (Tirol)
Kontaktdaten:

Donnerstag 3. Januar 2008, 13:18

Hallo Stefanie!

:mrgreen:

Code: Alles auswählen

def grundzustand():
    wx.MessageBox("Bitte starten Sie das Programm!", ";-)")
mfg
Gerold
:-)
[url]http://halvar.at[/url] | [url=http://halvar.at/elektronik/kleiner_bascom_avr_kurs/]Kleiner Bascom AVR Kurs[/url]
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
lunar

Donnerstag 3. Januar 2008, 13:29

Wie definierst du "Grundzustand"? Wenn es nur darum geht, die ursprüngliche Anzeige wiederherzustelllen, dann musst du im Event Handler für den Button wohl jedes Widgets manuell zurücksetzen.
CM
User
Beiträge: 2464
Registriert: Sonntag 29. August 2004, 19:47
Kontaktdaten:

Donnerstag 3. Januar 2008, 15:34

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
ete
User
Beiträge: 218
Registriert: Montag 19. Februar 2007, 13:19
Kontaktdaten:

Donnerstag 3. Januar 2008, 16:05

Ja es geht um Einträge löschen bzw. zurücksetzen

Ich hab gedacht das geht irgendwie einfacher. Deswegen hab ich auch in der Doku nix gefunden...

Vielen Dank für die Tips, dann werd ich's so machen.

@Gerold

Hab doch gesagt ohne Neustart :mrgreen:

Liebe Grüsse
Antworten