我想在每次更改TextCtrl时获取TextCtrl的值。我的代码返回“旧”值(就像我按下键之前) - 但我希望用我按下的键获得“新”值。 例如,当我的TC的值为“123”并且我添加“4”时,我仍然返回“123”,但我想得到“1234”。
class pageThree(wx.Panel):
def __init__(self, parent):
wx.Panel.__init__(self, parent=parent,size=(800,600))
self.pageThree=wx.Panel(self,size=(800,600))
self.TC = wx.TextCtrl(self.pageThree,-1,pos=(100,150),size=(60,20))
self.TC.Bind(wx.EVT_KEY_DOWN, self.getValue)
def getValue(self, event):
print self.TC.GetValue()
由于我只使用此TC中的整数,我尝试添加 + event.GetKeyCode() - 48 ,但当删除值而不是添加一个时,这不起作用= / < / p>
答案 0 :(得分:2)
您需要绑定到wx.EVT_TEXT而不是wx.EVT_KEY_DOWN。请参阅以下示例:
import wx
########################################################################
class MyPanel(wx.Panel):
""""""
#----------------------------------------------------------------------
def __init__(self, parent):
"""Constructor"""
wx.Panel.__init__(self, parent)
self.text = wx.TextCtrl(self)
self.text.Bind(wx.EVT_TEXT, self.onText)
#----------------------------------------------------------------------
def onText(self, event):
"""
"""
print self.text.GetValue()
########################################################################
class MainFrame(wx.Frame):
""""""
#----------------------------------------------------------------------
def __init__(self):
"""Constructor"""
wx.Frame.__init__(self, None, title="Events!")
panel = MyPanel(self)
self.Show()
#----------------------------------------------------------------------
if __name__ == "__main__":
app = wx.App(False)
frame = MainFrame()
app.MainLoop()