Why my TextCtl can get wx.EVT_TEXT event, but can not get wx.EVT_TEXT_ENTER event

My wx.SplitterWindow environment, TextCtl meet event issue.

#!/usr/bin/env python

-- coding: utf-8 --

Why TextCtl can get wx.EVT_TEXT event, but can not get wx.EVT_TEXT_ENTER event

import wx
import wx.lib.scrolledpanel as scrolled
import os
import sys

reload(sys)
sys.setdefaultencoding(“utf-8”)

image_file = “Waterlilies.jpg”

class Frame(wx.Frame):
def init(self, index=0):
“”“Create a Frame instance”""
wx.Frame.init(self, None, -1, “Image Show”, size=(800, 600), style=wx.DEFAULT_FRAME_STYLE)

    # Create split window
    self.split = wx.SplitterWindow( self, -1, style=wx.SP_NOBORDER )
    self.imgpanel = wx.ScrolledWindow( self.split, -1, style=wx.NO_BORDER )
    self.imgpanel.SetScrollbars( 50, 50, 20, 20 )
    self.img = wx.StaticBitmap( self.imgpanel, -1 )

    imgVsizer = wx.BoxSizer( wx.VERTICAL )
    imgHsizer = wx.BoxSizer( wx.wx.HORIZONTAL )
    imgHsizer.Add( self.img, 1, wx.CENTER, 0 )
    imgVsizer.Add( imgHsizer, 1, wx.CENTER, 0 )
    self.imgpanel.SetSizer( imgVsizer )

    print "Create a Frame instance"
    self.panel = wx.Panel(self.split, -1, style=wx.SP_NOBORDER)
    self.split.SplitHorizontally ( self.imgpanel, self.panel, -40 )
    self.filename = None
    self.cmd_box = wx.BoxSizer(wx.HORIZONTAL)

    image_up = wx.Button(self.panel, -1, label=("Up"))
    image_next = wx.Button(self.panel, -1, label=("Next"))
    self.text_current_num = wx.TextCtrl(self.panel, -1, "", size=(80, -1))

    self.cmd_box.Add(image_up, 0, wx.ALIGN_CENTER)
    self.cmd_box.Add(image_next, 0, wx.ALIGN_CENTER)
    self.cmd_box.Add(self.text_current_num, 0, wx.ALIGN_CENTER)
    self.main_box = wx.BoxSizer(wx.VERTICAL)
    self.main_box.Add(self.cmd_box, 0, wx.ALIGN_CENTER)
    self.panel.SetSizer(self.main_box)

    #map event
    self.Bind(wx.EVT_BUTTON, self.OnImageUp, image_up)
    self.Bind(wx.EVT_BUTTON, self.OnImageNext, image_next)

    #imgpanel.Bind(wx.EVT_KEY_DOWN, self.OnKeyDown)
    self.img.Bind(wx.EVT_LEFT_UP, self.OnMouseLeftUp)
    self.img.Bind(wx.EVT_LEFT_DCLICK, self.OnMouseLeftDClick)

    self.text_current_num.Bind(wx.EVT_TEXT, self.OnInputText)
    self.text_current_num.Bind(wx.EVT_TEXT_ENTER, self.OnInputTextEnter)

    self.Bind(wx.EVT_CLOSE, self.OnExit)
    self.Bind(wx.EVT_SIZE, self.OnSize)
    filename = image_file
    self.SetValue(filename, new=True)

self.imgpanel.SetFocus()

def OnKeyDown(self, event):
    print "on key down ======"
    key = event.GetKeyCode()
    print "KeyPress: ", key
    event.Skip()

def OnKeyUp(self, event):
    print "on key up ======"
    key = event.GetKeyCode()
    print "KeyPress: ", key
    event.Skip()

def OnMouseLeftUp(self, event):
    print "image mouse left on up click =="

def OnMouseLeftDown(self, event):
    print "image mouse left on down click =="

def OnMouseLeftDClick(self, event):
    print "mouse left dclick"

def KeyPress(self, event):
    print "Key press ======"
    key = event.GetKeyCode()
    print "KeyPress: ", key

def OnEnterWindow(self, event):
    print "On Enter Window"

def OnLeaveWindow(self, event):
    print "On Leave Window"

def OnSize(self, event):
    event.Skip()
    self.Layout()

def OnInputText(self, event):
    print "OnInputText *"
    event.Skip()

def OnInputTextEnter(self, event):
    print "OnInputTextEnter *"
    event.Skip()

def OnImageUp(self, event):
    self.ImageUp()

def ImageUp(self):
    pass

def OnImageNext(self, event):
    pass

def DrawImage(self, filename, rotate):
    win_width, win_height = self.GetSize()
    win_width -= 100
    win_height -= 100
    empty_image = wx.EmptyImage(win_width, win_height)
    empty_image.Replace(0,0,0,255,255,255)
    bmp = empty_image.ConvertToBitmap()
    sz = (win_width,win_height)
    self.img.SetSize( sz )
    self.img.SetBitmap( bmp )
    self.imgpanel.SetVirtualSize( sz )

def SetValue(self, filename, rotate=0, new=False):    # display the selected file in the panel
    if new == True:
        self.ResetVal()
    self.DrawImage(filename, rotate)

    li = filename.split(os.sep)
    if len(li) > 0:
        self.SetTitle(li[-1])
    else:
        self.SetTitle("")

def ResetVal(self):
    self.zoom_value = 1.0
    self.image_scale = 0
    self.win_zoom_value = 0

def OnExit(self, event):
    self.Destroy()

def scale_size(self, s_width, s_height, to_width, to_height):
    xfactor = float(to_width) / s_width
    yfactor = float(to_height) / s_height
    if xfactor < 1.0 and xfactor < yfactor:
        scale = xfactor
    elif yfactor < 1.0 and yfactor < xfactor:
        scale = yfactor
    else:
        scale = xfactor

    owidth = int(scale*s_width)
    oheight = int(scale*s_height)

    return (owidth, oheight)

class App(wx.App):
“”“Application class.”""
def OnInit(self):
self.frame = Frame()
self.frame.Show(True)
self.SetTopWindow(self.frame)
return True

def main():
app = App()
app.MainLoop()

if name == ‘main’:
main()

I found the reson: TextCtl need style=wx.TE_PROCESS_ENTER
thanks

···

On Thursday, March 27, 2014 4:52:57 PM UTC+8, luckrill wrote:

My wx.SplitterWindow environment, TextCtl meet event issue.

#!/usr/bin/env python

-- coding: utf-8 --

Why TextCtl can get wx.EVT_TEXT event, but can not get wx.EVT_TEXT_ENTER event

import wx
import wx.lib.scrolledpanel as scrolled
import os
import sys

reload(sys)
sys.setdefaultencoding(“utf-8”)

image_file = “Waterlilies.jpg”

class Frame(wx.Frame):
def init(self, index=0):
“”“Create a Frame instance”“”
wx.Frame.init(self, None, -1, “Image Show”, size=(800, 600), style=wx.DEFAULT_FRAME_STYLE)

    # Create split window
    self.split = wx.SplitterWindow( self, -1, style=wx.SP_NOBORDER )
    self.imgpanel = wx.ScrolledWindow( self.split, -1, style=wx.NO_BORDER )
    self.imgpanel.SetScrollbars( 50, 50, 20, 20 )
    self.img = wx.StaticBitmap( self.imgpanel, -1 )

    imgVsizer = wx.BoxSizer( wx.VERTICAL )
    imgHsizer = wx.BoxSizer( wx.wx.HORIZONTAL )
    imgHsizer.Add( self.img, 1, wx.CENTER, 0 )
    imgVsizer.Add( imgHsizer, 1, wx.CENTER, 0 )
    self.imgpanel.SetSizer( imgVsizer )

    print "Create a Frame instance"
    self.panel = wx.Panel(self.split, -1, style=wx.SP_NOBORDER)
    self.split.SplitHorizontally ( self.imgpanel, self.panel, -40 )
    self.filename = None
    self.cmd_box = wx.BoxSizer(wx.HORIZONTAL)

    image_up = wx.Button(self.panel, -1, label=("Up"))
    image_next = wx.Button(self.panel, -1, label=("Next"))
    self.text_current_num = wx.TextCtrl(self.panel, -1, "", size=(80, -1))

    self.cmd_box.Add(image_up, 0, wx.ALIGN_CENTER)
    self.cmd_box.Add(image_next, 0, wx.ALIGN_CENTER)
    self.cmd_box.Add(self.text_current_num, 0, wx.ALIGN_CENTER)
    self.main_box = wx.BoxSizer(wx.VERTICAL)
    self.main_box.Add(self.cmd_box, 0, wx.ALIGN_CENTER)
    self.panel.SetSizer(self.main_box)

    #map event
    self.Bind(wx.EVT_BUTTON, self.OnImageUp, image_up)
    self.Bind(wx.EVT_BUTTON, self.OnImageNext, image_next)

    #imgpanel.Bind(wx.EVT_KEY_DOWN, self.OnKeyDown)
    self.img.Bind(wx.EVT_LEFT_UP, self.OnMouseLeftUp)
    self.img.Bind(wx.EVT_LEFT_DCLICK, self.OnMouseLeftDClick)

    self.text_current_num.Bind(wx.EVT_TEXT, self.OnInputText)
    self.text_current_num.Bind(wx.EVT_TEXT_ENTER, self.OnInputTextEnter)

    self.Bind(wx.EVT_CLOSE, self.OnExit)
    self.Bind(wx.EVT_SIZE, self.OnSize)
    filename = image_file
    self.SetValue(filename, new=True)

self.imgpanel.SetFocus()

def OnKeyDown(self, event):
    print "on key down ======"
    key = event.GetKeyCode()
    print "KeyPress: ", key
    event.Skip()

def OnKeyUp(self, event):
    print "on key up ======"
    key = event.GetKeyCode()
    print "KeyPress: ", key
    event.Skip()

def OnMouseLeftUp(self, event):
    print "image mouse left on up click =="

def OnMouseLeftDown(self, event):
    print "image mouse left on down click =="

def OnMouseLeftDClick(self, event):
    print "mouse left dclick"

def KeyPress(self, event):
    print "Key press ======"
    key = event.GetKeyCode()
    print "KeyPress: ", key

def OnEnterWindow(self, event):
    print "On Enter Window"

def OnLeaveWindow(self, event):
    print "On Leave Window"

def OnSize(self, event):
    event.Skip()
    self.Layout()

def OnInputText(self, event):
    print "OnInputText *"
    event.Skip()

def OnInputTextEnter(self, event):
    print "OnInputTextEnter *"
    event.Skip()

def OnImageUp(self, event):
    self.ImageUp()

def ImageUp(self):
    pass

def OnImageNext(self, event):
    pass

def DrawImage(self, filename, rotate):
    win_width, win_height = self.GetSize()
    win_width -= 100
    win_height -= 100
    empty_image = wx.EmptyImage(win_width, win_height)
    empty_image.Replace(0,0,0,255,255,255)
    bmp = empty_image.ConvertToBitmap()
    sz = (win_width,win_height)
    self.img.SetSize( sz )
    self.img.SetBitmap( bmp )
    self.imgpanel.SetVirtualSize( sz )

def SetValue(self, filename, rotate=0, new=False):    # display the selected file in the panel
    if new == True:
        self.ResetVal()
    self.DrawImage(filename, rotate)

    li = filename.split(os.sep)
    if len(li) > 0:
        self.SetTitle(li[-1])
    else:
        self.SetTitle("")

def ResetVal(self):
    self.zoom_value = 1.0
    self.image_scale = 0
    self.win_zoom_value = 0

def OnExit(self, event):
    self.Destroy()

def scale_size(self, s_width, s_height, to_width, to_height):
    xfactor = float(to_width) / s_width
    yfactor = float(to_height) / s_height
    if xfactor < 1.0 and xfactor < yfactor:
        scale = xfactor
    elif yfactor < 1.0 and yfactor < xfactor:
        scale = yfactor
    else:
        scale = xfactor

    owidth = int(scale*s_width)
    oheight = int(scale*s_height)

    return (owidth, oheight)

class App(wx.App):
“”“Application class.”“”
def OnInit(self):
self.frame = Frame()
self.frame.Show(True)
self.SetTopWindow(self.frame)
return True

def main():
app = App()
app.MainLoop()

if name == ‘main’:
main()