Am I not understanding something about lambdas? Or GetValue() the variable that I am trying to pass is empty. Is it best to just create a global palletNumberText for this?
In createWidgets() I am binding an EVT_TEXT so that when text is entered into the TextCtrl it should call onPalletNumberText(event, variable_here)
The following line is where I am having difficulties:
palletNumberText.Bind(wx.EVT_TEXT, lambda event, temp_str=palletNumberText.GetValue(): self.onPalletNumberText( event, temp_str ))
Inside this Code Snippet:
class ClassName(wx.Frame):
def __init__(self, parent, title):
wx.Frame.__init__(self, parent, title=title)
self.panel = wx.Panel(self)
self.PhotoMaxSize = 240
self.createWidgets()
self.Show()
def createWidgets(self):
.
.
.
palletNumberText = wx.TextCtrl(self.panel, size=(80,-1))
# THIS LINE
palletNumberText.Bind(wx.EVT_TEXT, lambda event, temp_str=palletNumberText.GetValue(): self.onPalletNumberText( event, temp_str ))
.
.
.
def onPalletNumberText(self, event, palletNumber):
'''
save palletNumbertTxt Value when text is entered
'''
print palletNumber
print "This is a test"
# Store Value
return
Readings that I have looked at:
However my results:

Thanks.
your default argument is evaluated at start time
lambda event, temp_str=None: self.onPalletNumberText( event,
temp_str if temp_str is not None else palletNumberText.GetValue() )
I think would work
but what you really want is probably something more like
lambda event, txt_instance=palletNumberText: self.onPalletNumberText( event, txt_instance.GetValue() )
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With