Seite 1 von 1

Funktionsaufruf nach Schliessen eines wx widgets?

Verfasst: Montag 23. August 2010, 07:25
von Frederik
Hallo,
kurze Frage: Ich moechte nach dem Schliessen eines wx.Frame-widgets einen reload eines Moduls durchfuehren, brauche dafuer aber einen Trigger, der mir sagt, wann das widget geschlossen wurde. Hat da jemand eine Idee?

Code: Alles auswählen

def OnPreferences(self,event):
	dlg = mdaProSettings.MyFrame(None, -1, "Settings Menu")
	dlg.Show()

	**if dlg closed: reload(module)**
Herzlichen Dank im Voraus!

Frederik

Re: Funktionsaufruf nach Schliessen eines wx widgets?

Verfasst: Montag 23. August 2010, 08:48
von ntrunk
Frederik hat geschrieben:Hallo,
kurze Frage: Ich moechte nach dem Schliessen eines wx.Frame-widgets einen reload eines Moduls durchfuehren, brauche dafuer aber einen Trigger, der mir sagt, wann das widget geschlossen wurde. Hat da jemand eine Idee?
[...]
Reicht es, wenn du deinen Dialog mit ShowModal aufrufst?
Dieser Aufruf kehrt erst zurück, wenn der Dialog mit Ok oder Abbrechen geschlossen wurde. (1) (2)
Norbert

(1) sollte das nicht ins wx-Unterforum?
(2) reload? Das klingt nicht nach einer guten Idee, eher nach selbst modifizierendem Code oder nach Code, der auf Modulebene statt in einer Funktion ausgeführt wird. Evtl. solltest du den Lösungsansatz für dein Problem nochmals überdenken.

Re: Funktionsaufruf nach Schliessen eines wx widgets?

Verfasst: Montag 23. August 2010, 09:36
von Frederik
Leider hat wx.Frame kein Attribut ShowModal().

zu (1): ja :|
zu (2): jein, es handelt sich um Laden von Variablen, die waehrend des wx.Frame-Aufrufes in eine externe .py-Datei geschrieben werden.

Re: Funktionsaufruf nach Schliessen eines wx widgets?

Verfasst: Montag 23. August 2010, 09:45
von mathi
wie wäre es mit

Code: Alles auswählen

self.Bind(wx.EVT_CLOSE, self.OnClose)
gruß Mathi

Re: Funktionsaufruf nach Schliessen eines wx widgets?

Verfasst: Montag 23. August 2010, 13:15
von ntrunk
Frederik hat geschrieben:Leider hat wx.Frame kein Attribut ShowModal().

zu (1): ja :|
zu (2): jein, es handelt sich um Laden von Variablen, die waehrend des wx.Frame-Aufrufes in eine externe .py-Datei geschrieben werden.
Hm, das *ist* selbstmodifizierender Code, und i.d.R. keine gute Idee. Kannst du deine Variablen nicht in eine beliebige Datei packen und diese dann mit den üblichen Verdächtigen einlesen statt als Modul zu laden?

Ansonsten zu dem eigentlichen Problem: Nimm wx.Dialog statt wx.Frame, die Dialoge sind genau für solche Fälle wie deinen gemacht. Wenn es unbedingt ein Frame sein muss, dann hat dir ja Mathi schon einen Tipp gegeben.

Gruß
Norbert