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