Wieso funktioniert mein Button nicht?

Plattformunabhängige GUIs mit wxWidgets.
Antworten
2bock
User
Beiträge: 94
Registriert: Freitag 12. September 2003, 07:58
Wohnort: 50.9333300 / 6.3666700

Montag 18. Oktober 2004, 10:54

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:
Christopy_ohne_login

Montag 18. Oktober 2004, 13:32

Scheint die falsche Reihenfolge zu sein. Erst das Event binden und dann den Dialog aufrufen sollte funktionieren.
2bock_not_logged

Montag 18. Oktober 2004, 15:30

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.
Gast

Montag 18. Oktober 2004, 16:42

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?
2bock_not_logged

Dienstag 19. Oktober 2004, 08:16

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:
Antworten