54
55 if val != self.startValue: 56 changed = True
57 grid.GetTable().SetValue(row, col, val) # update the table 58
59 self.startValue = '' 60 self._tc.SetValue('') 61 return changed 62
63 def Reset(self): 64 \ 65 Reset the value in the control back to its starting value.
66 *Must Override* 67 \
68 self._tc.SetValue(self.startValue) 69 self._tc.SetInsertionPointEnd() 70
71 def Clone(self): 72 \
73 Create a new object which is the copy of this one 74 *Must Override* 75 \
76 return UpCaseCellEditor() 77
78 def StartingKey(self, evt): 79 \
80 If the editor is enabled by pressing keys on the grid, this will be
81 called to let the editor do something about that first key if desired. 82 \
83 self.OnChar(evt)
84 if evt.GetSkipped():
85 self._tc.EmulateKeyPress(evt) 86
87 def OnChar(self, evt): 88 key = evt.GetKeyCode() 89 if key 255: 90 evt.Skip() 91 return
92 char = chr(key)
93 if char in string.letters:
94 char = char.upper()
95 self._tc.WriteText(char)#ת»»Îª´óд 96 else:
97 evt.Skip() 98
99 class TestFrame(wx.Frame): 100 def __init__(self):
101 wx.Frame.__init__(self, None, title=\Editor\,
102 size=(640,480)) 103
104 grid = wx.grid.Grid(self) 105 grid.CreateGrid(50,50)
106 grid.SetDefaultEditor(UpCaseCellEditor())#ÉèÖóÉĬÈϱà¼Æ÷ 107 108
109 app = wx.PySimpleApp() 110 frame = TestFrame() 111 frame.Show() 112 app.MainLoop()
²¶»ñÓû§Ê¼þ
Íø¸ñ¿Ø¼þÓÐÐí¶àµÄÓû§Ê¼þ¡£ÎÒÃǽ«°ÑËüÃÇ·ÖΪÊó±êʼþºÍ¼üÅÌʼþ¡£
ÈçºÎ²¶»ñÓû§µÄÊó±ê¶¯×÷£¿
¶ÔÓÚÍø¸ñ¿Ø¼þ£¬³ýÁ˲»Í¬µÄÊó±êʼþÀàÐÍÍ⣬¶ÔÓÚÕâЩÀàÐÍ»¹ÓÐһЩ²»Í¬µÄʼþÀà¡£×î³£ÓõÄʼþÀàÊÇwx.grid.GridEvent¡£Íø¸ñµÄʼþÀàÊÇwx.CommandEventµÄÒ»¸ö×ÓÀ࣬ËüÌṩÁËÓÃÓÚ»ñµÃʼþÏêÇéµÄ¼¸¸ö·½·¨£¬Èç±í14.8Ëùʾ¡£ ±í14.8 wx.grid.GridEventµÄ·½·¨
AltDown() µ±Ê¼þ±»´¥·¢Ê±£¬Èç¹ûalt¼ü±»°´ÏÂÁË£¬Ôò·µ»ØTrue¡£ ControlDown() µ±Ê¼þ±»´¥·¢Ê±£¬Èç¹ûcontrol¼ü±»°´ÏÂÁË£¬Ôò·µ»ØTrue¡£ GetCol() GetPosition() GetRow() ·µ»Ø·¢ÉúʼþµÄµ¥Ôª¸ñËùÔÚµÄÁеÄË÷Òý¡£ ·µ»Ø·µ»ØÒ»¸öwx.Point¡£Ëü´ú±íʼþ·¢ÉúµãµÄÂß¼×ø±ê£¨ÒÔÏñËØΪµ¥Î»£©¡£ ·µ»Ø·¢ÉúʼþµÄµ¥Ôª¸ñËùÔÚµÄÐеÄË÷Òý¡£ MetaDown() Selecting() ShiftDown() µ±Ê¼þ±»´¥·¢Ê±£¬Èç¹ûmet¼ü±»°´ÏÂÁË£¬Ôò·µ»ØTrue¡£ Èç¹ûʼþÊÇÒ»¸ö±»Ñ¡Ê¼þ£¬Ôò·µ»ØTrue£¬Èç¹ûʼþÊÇÈ¡ÏûÑ¡Ôñʼþ£¬Ôò·µ»ØFalse¡£ µ±Ê¼þ±»´¥·¢Ê±£¬Èç¹ûshift¼ü±»°´ÏÂÁË£¬Ôò·µ»ØTrue¡£ Óëwx.grid.GridEventÏà¹ØµÄÓм¸¸ö²»Í¬µÄʼþÀàÐÍ¡£Èç±í14.9Ëùʾ¡£ ±í14.9 ¹ØÓÚÍø¸ñÊó±êʼþµÄµ¥Ôª¸ñʼþÀàÐÍ
wx.grid.EVT_GRID_CELL_CHANGE wx.grid.EVT_GRID_CELL_LEFT_CLICK wx.grid.EVT_GRID_CELL_LEFT_DCLICK wx.grid.EVT_GRID_CELL_RIGHT_CLICK wx.grid.EVT_GRID_CELL_RIGHT_DCLICK wx.grid.EVT_GRID_EDITOR_HIDDEN wx.grid.EVT_GRID_EDITOR_SHOWN wx.grid.EVT_GRID_LABEL_LEFT_CLICK wx.grid.EVT_GRID_LABEL_LEFT_DCLICK wx.grid.EVT_GRID_LABEL_RIGHT_CLICK wx.grid.EVT_GRID_LABEL_RIGHT_DCLICK wx.grid.EVT_GRID_Select_CELL µ±Óû§Í¨¹ý±à¼Æ÷¸Ä±äµ¥Ôª¸ñÖеÄÊý¾Ýʱ´¥·¢¸Ãʼþ¡£ µ±Óû§ÔÚÒ»¸öµ¥Ôª¸ñÖÐÇû÷Êó±ê×ó¼üʱ´¥·¢¸Ãʼþ¡£ µ±Óû§ÔÚÒ»¸öµ¥Ôª¸ñÖÐË«»÷Êó±ê×ó¼üʱ´¥·¢¸Ãʼþ¡£ µ±Óû§ÔÚÒ»¸öµ¥Ôª¸ñÖÐÇû÷Êó±êÓÒ¼üʱ´¥·¢¸Ãʼþ¡£ µ±Óû§ÔÚÒ»¸öµ¥Ôª¸ñÖÐË«»÷Êó±êÓÒ¼üʱ´¥·¢¸Ãʼþ¡£ µ±Ôڱ༻Ự½áÊøʱÒþ²ØÒ»¸öµ¥Ôª¸ñ±à¼Æ÷Ôò´¥·¢¸Ãʼþ¡£ µ±Ôڱ༻Ự½áÊøʱÏÔʾһ¸öµ¥Ôª¸ñ±à¼Æ÷Ôò´¥·¢¸Ãʼþ¡£ µ±Óû§ÔÚÐлòÁеıêÇ©ÇøÓòÇû÷Êó±ê×ó¼üʱ´¥·¢¸Ãʼþ¡£ µ±Óû§ÔÚÐлòÁеıêÇ©ÇøÓòË«»÷Êó±ê×ó¼üʱ´¥·¢¸Ãʼþ¡£ µ±Óû§ÔÚÐлòÁеıêÇ©ÇøÓòÇû÷Êó±êÓÒ¼üʱ´¥·¢¸Ãʼþ¡£ µ±Óû§ÔÚÐлòÁеıêÇ©ÇøÓòË«»÷Êó±êÓÒ¼üʱ´¥·¢¸Ãʼþ¡£ µ±Óû§½«½¹µãÒƵ½Ò»¸öеĵ¥Ôª¸ñ£¬²¢Ñ¡ÔñËüʱ´¥·¢¸Ãʼþ¡£ ÓÐÁ½¸öʼþÀàÐÍ£¬ËüÃÇÓÐÒ»¸öwx.grid.GridSizeEventʵÀý¡£ÕâÁ½¸öʼþÀàÐÍ·Ö±ðÊÇwx.grid.EVT_GRID_COL_SIZE£ºµ±ÁдóС±»¸Ä±äʱ´¥·¢£¬
wx.grid.EVT_GRID_ROW_SIZE£ºµ±ÐеĴóС±»¸Ä±äʱ´¥·¢¡£Íø¸ñµÄ³ß´çʼþÓÐ5¸öÓëwx.GridEvent!AltDown(), ControlDown(), GetPosition(), MetaDow(), ºÍ
ShiftDownÏàͬµÄ·½·¨¡£wx.grid.GridSizeEventµÄ×îºóµÄÒ»¸ö·½·¨ÊÇ
GetRowOrCol()£¬¸Ã·½·¨·µ»Ø·¢Éú¸Ä±äµÄÁлòÐеÄË÷Òý£¬µ±È»ÕâÒÀÀµÓÚ¾ßÌåµÄʼþÀàÐÍ¡£
ʼþÀàÐÍwx.grid.EVT_GRID_RANGE_SelectÓÐÒ»¸ö
wx.grid.GridRangeSelectEventµÄʵÀý£¬¸Ãʼþµ±Óû§Ñ¡ÔñÁ¬Ðø¾ØÐη¶Î§Äڵĵ¥Ôª¸ñÖб»´¥·¢¡£¸ÃʼþµÄʵÀýÓµÓеķ½·¨ÊÇ
GetBottomRightCoords(), GetBottomRow(), GetLeftCol(), GetRightCol(), GetTopRightCoords()ºÍGetTopRow()£¬ËüÃÇ·µ»Ø±»Ñ¡ÔñÇøÓòµÄÕûÊýË÷Òý»ò(row, col)Ôª×é¡£
×îºó£¬Ê¼þÀàÐÍEVT_GRID_EDITOR_CreateDÓÐÒ»¸ö
wx.grid.GridEditorCreatedEventʵÀý¡£Õâ¸öʼþÔÚµ±Í¨¹ýÒ»¸ö±à¼»á»°´´½¨ÁËÒ»¸ö±à¼Æ÷ʱ±»´¥·¢¡£¸ÃʼþʵÀýµÄ·½·¨ÓÐGetCol(), GetRow(), ºÍGetControl()£¬ËüÃǷֱ𷵻ط¢ÉúʼþµÄÁУ¬ÐеÄË÷ÒýºÍʹÓõı༿ؼþ¡£
ÈçºÎ²¶»ñÓû§µÄ¼üÅ̶¯×÷£¿
³ýÁËʹÓÃÊó±êÍ⣬Óû§»¹¿ÉÒÔʹÓüüÅÌÀ´ÔÚÍø¸ñÖÐÒƶ¯¡£Äã¿ÉÒÔͨ¹ý´úÂëµÄ·½·¨À´Ê¹Óñí14.10ÖеÄÒƶ¯·½·¨¸Ä±ä¹â±ê¡£ÆäÖеÄÐí¶à·½·¨¶¼ÒªÇóÒ»¸öexpandSelection²ÎÊý¡£Ã¿¸ö·½·¨ÖеÄexpandSelectionµÄ×÷Óö¼Ïàͬ¡£Èç¹ûÕâ¸ö²ÎÊýΪTrue£¬ÄÇôµ±Ç°µÄÑ¡Ï±»À©Õ¹ÒÔÈÝÄÉÕâ¸öеĹâ±êλÖá£Èç¹ûÕâ¸ö²ÎÊýΪFalse£¬ÄÇôµ±Ç°µÄÑ¡ÏеĹâ±êËùÈ¡´ú¡£
±í14.10 Íø¸ñ¹â±êÒƶ¯·½·¨
MoveCursorDown(expandSelection) ÏòÏÂÒƶ¯¹â±ê¡£Èç¹ûexpandSelectionΪFalse£¬µÈͬÓÚ°´ÏÂ\ϼýÍ·¼ü\£¬Èç¹ûΪTrue£¬ÔòµÈͬÓÚ°´ÏÂ\ϼýÍ·¼ü\¡£ ÏòÏÂÒƶ¯¹â±ê¡£Èç¹ûexpandSelectionΪFalse£¬ÔòµÈͬÓÚ\ϼýÍ·¼ü\£¬Èç¹ûΪTrue£¬ÔòµÈͬÓÚ\ϼýÍ·¼ü\¡£ Ïò×óÒƶ¯¹â±ê¡£Èç¹ûexpandSelectionΪFalse£¬µÈͬÓÚ°´ÏÂ\×ó¼ýÍ·¼ü\£¬Èç¹ûΪTrue£¬ÔòµÈͬÓÚ°´ÏÂ\×ó¼ýÍ·¼ü\¡£ Ïò×óÒƶ¯¹â±ê¡£Èç¹ûexpandSelectionΪFalse£¬ÔòµÈͬÓÚ\×ó¼ýÍ·¼ü\£¬Èç¹ûΪTrue£¬ÔòµÈͬÓÚ\×ó¼ýMoveCursorDownBlock(expandSelection) MoveCursorLeft(expandSelection) MoveCursorLeftBlock(expandSelection)