wxpython事件处理:按键后获取值



每次更改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中只处理整数,所以我尝试添加+事件。GetKeyCode()-48,但当我删除一个值而不是添加一个=/

时,这不起作用

您需要绑定到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()

相关内容

  • 没有找到相关文章

最新更新