Seite 1 von 1

Wieso funktioniert mein Button nicht?

Verfasst: Montag 18. Oktober 2004, 10:54
von 2bock
Hi zusammen. Ich habs wohl heute auf den Augen. Problem: Die Funktion InsertData wird nicht nach drücken des Buttons usgeführt. Warum nicht?

Code: Alles auswählen

mainSizer = wx.BoxSizer(wx.VERTICAL)
        dlg = wx.Dialog(self, -1,lan_createProgram,style= wx.DEFAULT_DIALOG_STYLE| wx.RESIZE_BORDER )#size=(800,600))
        programPanel = PanelsBase.ProgramBase(dlg, None, None)
        self.programPanel=programPanel
        btn = wx.Button(dlg, -1, lan_buttonSave)
        mainSizer.Add(programPanel,1,wx.EXPAND)
        mainSizer.Add(btn,0,wx.ALIGN_CENTER_HORIZONTAL )
        dlg.SetSizer(mainSizer)
        dlg.SetAutoLayout(1)
        mainSizer.Fit(dlg)       
        dlg.CenterOnParent(wx.BOTH)
        dlg.ShowModal()
        
        btn.Bind(wx.EVT_BUTTON, self.InsertData)
               
    def InsertData(self,event):
        print 'Alles OK XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'
        

Danke für eure Hilfe.

Greetz from 2bock
:wink:

Verfasst: Montag 18. Oktober 2004, 13:32
von Christopy_ohne_login
Scheint die falsche Reihenfolge zu sein. Erst das Event binden und dann den Dialog aufrufen sollte funktionieren.

Nein nciht so ganz.

Verfasst: Montag 18. Oktober 2004, 15:30
von 2bock_not_logged
Also Problem scheint mir fplgendes zu sein. Ich versiche in einer Funktion, die durch einen Event ausgelöst wurde einen Weiteren Event ähm abzufangen. Die Events überlageern sich und so wird der 2. Überhaupt nicht berücksichtigt. Das scheint der Fehler zu sein.

Verfasst: Montag 18. Oktober 2004, 16:42
von Gast
Bild
ähm...
Also: Du erstellst einen Dialog und einen Button den Du auf dem Dialog platzierst. Dann rufst Du den Dialog mit showModal() auf. Dann bindest Du das Event an den Button. Aber Du müsstest Das Event vor showModal() binden. Nachher bringts ja nix mehr, oder?

Hab ne Lösung gefunden

Verfasst: Dienstag 19. Oktober 2004, 08:16
von 2bock_not_logged
Ja "Gast" stimmt. Aber wie schon gesagt, das Problem bestand darin, das ich in der "Funktion" schon einen EventHandler (Typ EVENT_BUTTON) benutzt hatte. Das wiederum hat verhindert, das ein weiters Eventhandling vom Typ EVENT_BUTTON nicht ausgeführt wurde. Frag mich nicht warum, aber das war es wohl. Ich habs umgangen, indem ich die Dialogerzeugung in eine Separate Klasse geschrieben habe. Aufgerufen wurde diese Klasse durch eine Funktion, die nicht durch einen Event angestoßen wurde. Ich weiß, das ist ziemlich gefrickelt, aber solange mir keine schönere Lösung einfällt, denke ich das das erstmal reicht. (Ich darf nur nicht auf den Code gucken, sonst wird mir schlecht :o

Greetz from 2bock :wink: