Dear all,
I have a window with several textctrl. I am trying to intercept the mouse click in each control, open a filedialog and set the value of the specific control with the selected file.
The problem is that I would like to avoid creating hundreds of similar functions for each control, so I would like to bind one single function to all of them.
What I got so far is the following

def onSecond(self, event):
    focus = wx.TextCtrl.FindFocus()
        if focus.GetValue()=="":
            dlg = wx.FileDialog(self, message="Choose the first image (base image)",wildcard = filters, style = wx.MULTIPLE)

            if dlg.ShowModal() == wx.ID_OK:
                focus.SetValue(dlg.GetDirectory()+"; "+", ".join(str(fl[len(dlg.GetDirectory())+1:]) for fl in dlg.GetPaths()))

                #print dlg.GetDirectory()+"; "+", ".join(str(fl[len(dlg.GetDirectory())+1:]) for fl in dlg.GetPaths())


The above works if the specific textctrl is empty (focus.GetValue()==""). What should I do if I want to popup the filedialog regardless of the contect of the specific control?
If I get rid of if focus.GetValue()=="": I will get into an endless loop.
Where am I wrong and how should I proceed?