Seite 1 von 1

Eine Funktion für mehrere Button Events

Verfasst: Freitag 13. Juni 2008, 07:47
von Korea-2003
Hallo,

ich habe ein Formular mit mehreren Eingabefeldern und hinter jeden Eingabefeld ist ein Button, der beim anklicken das Öffnen Dialogfenster ausmacht. Wenn ich mir nun dort eine Datei auswähle, soll er mir den ganzen Pfad in das neben dem Button liegende Textfeld schreiben.
Mein Problem ist nur, dass ich nich für jeden Button eine neue Funktion schrieben will, sondern nur eine nutzen will. Dieser Funktion muss ich irgendwie übergeben, welcher Button gedrückt wurde, um dann die verschiedensten Textfelder füllen zu können.
Hier mein Code bisher:

Code: Alles auswählen

wx.StaticText(self.panel, -1, "Prime File", pos=(20, 20))
self.txtPrimeFile = wx.TextCtrl(self.panel, -1, "", pos=(75, 18), size=(200, 20))      
btnFile1 = wx.Button(self.panel, label="...", pos=(280, 18), size=(30, 20))
self.Bind(wx.EVT_BUTTON, self.openFile, btnFile1)
wx.StaticText(self.panel, -1, "ProDB File", pos=(20, 45))
self.txtProDBFile = wx.TextCtrl(self.panel, -1, "", pos=(75, 43), size=(200, 20))         
btnFile2 = wx.Button(self.panel, label="...", pos=(280, 45), size=(30, 20))

def openFile(self, event):
    
        dialog = wx.FileDialog(self, "Choose a File", os.getcwd(), "", "*.*", wx.OPEN)
        if dialog.ShowModal() == wx.ID_OK:
            #wenn Button 1:
                 #self.txtPrimeFile.SetValue(dialog.GetPath())
            #wenn Button 2:
                # self.txtProDBFile.SetValue(dialog.GetPath())

        dialog.Destroy()
Wie kann ich das erreichen?

MfG :)

Verfasst: Freitag 13. Juni 2008, 09:08
von gerold
Hallo Korea!

Code: Alles auswählen

...
self.txt_prime_file = wx.TextCtrl(self.panel, -1, "", pos=(75, 18), size=(200, 20))     
self.btn_file1 = wx.Button(self.panel, label="...", pos=(280, 18), size=(30, 20))
self.btn_file1.Bind(wx.EVT_BUTTON, self.open_file)

self.txt_pro_dbfile = wx.TextCtrl(self.panel, -1, "", pos=(75, 43), size=(200, 20))         
self.btn_file2 = wx.Button(self.panel, label="...", pos=(280, 45), size=(30, 20))
self.btn_file2.Bind(wx.EVT_BUTTON, self.open_file)

def open_file(self, event):
    ...
    event_object = event.GetEventObject()
    destination_textctrl = {
        self.btn_file1: self.txt_prime_file,
        self.btn_file2: self.txt_pro_dbfile
    }[event_object]
    
    destination_textctrl.WriteText("Hallo Welt")
mfg
Gerold
:-)