【发布时间】:2014-05-17 07:43:33
【问题描述】:
我不了解 lambdas 吗?或者GetValue() 我试图传递的变量是空的。最好为此创建一个global palletNumberText 吗?
在createWidgets() 中,我绑定了一个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 中使用可选参数是否有原因? wxPython 中的事件处理函数只在事件中调用,因此
temp_str参数永远不会被赋予一个值,并且总是具有默认值。
标签: python user-interface lambda wxpython