我是不是对 lambda 不了解?或者 GetValue()
我试图传递的变量是空的。最好为此创建一个 global palletNumberText
吗?
在 createWidgets()
中,我绑定(bind)了一个 EVT_TEXT
,这样当在 TextCtrl
中输入文本时,它应该调用 onPalletNumberText(event, variable_here )
下一行是我遇到困难的地方:
palletNumberText.Bind(wx.EVT_TEXT, lambda event, temp_str=palletNumberText.GetValue(): self.onPalletNumberText( event, temp_str ))
在这里面 代码片段:
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
我看过的读物:
- wxpython, passing data to a function in self.Bind
- http://wiki.wxpython.org/Passing%20Arguments%20to%20Callbacks
- wxpython passing information, pointers?
- How can I give variables to the event handler?
- Is it possible to pass arguments into event bindings?
- http://wxpython-users.1045709.n5.nabble.com/GetValue-from-TextCtrl-by-hitting-a-button-td3203210.html
- Getting String from A TextCtrl Box
但是我的结果:
谢谢。
最佳答案
你的默认参数在开始时计算
lambda event, temp_str=None: self.onPalletNumberText( event,
temp_str if temp_str is not None else palletNumberText.GetValue() )
我觉得可以
但你真正想要的可能更像
lambda event, txt_instance=palletNumberText: self.onPalletNumberText( event, txt_instance.GetValue() )
关于python - wxpython 将变量传递给回调事件。 lambda 岛,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22872197/