python±í¸ñ ÏÂÔر¾ÎÄ

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)