Eine Funktion für mehrere Button Events

Plattformunabhängige GUIs mit wxWidgets.
Antworten
Korea-2003
User
Beiträge: 25
Registriert: Mittwoch 23. April 2008, 13:47

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 :)
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

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
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Antworten