Hi, I was wondering if it's possible to call a function using a string that is the exact same as the name of the function. Here's an example in which I wanted to make 4 bitmap buttons using a for loop, and the event bound to each one would be named similarly to the name of icon on it:

self.buttons = []
        self.buttonBitmaps = [ "New", "Edit", "Delete", "About" ]
        for i in range( 0, 4 ):
            self.image = wx.Image( "images/" + self.buttonBitmaps[ i ] + ".png",
                type=wx.BITMAP_TYPE_ANY ).ConvertToBitmap()
            self.tempButton = wx.BitmapButton( self.panel2, ID_BUTTON + i,
                self.image, size=( 30, 30 ), pos=( i * 30, 5 ) )
            self.buttons.append( self.button )
            self.tempButton.Bind( wx.EVT_BUTTON,
                "self.On" + self.buttonBitmaps[ i ] + "()" )

As you can see, the first button I wanted to call the function "self.OnNew()" when clicked. I know that this isn't working because I put a string in the event function, whereas it wants a function. Is there any sort of way I could turn the string into a reference to the function?

Check out the eval() function.

Jeff

Oh, it works! Thank you so much for the help.

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.