wxpython事件处理:按下键后的GetValue

时间:2013-11-20 10:38:51

标签: python event-handling wxpython wxwidgets

我想在每次更改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>

1 个答案:

答案 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()