wx.grid.GridCellBooleanEditor ÓÃÓÚµ¥Ôª¸ñ²¼¶ûÖµµÄ±à¼Æ÷£¬ÓÉÒ»¸ö¸´Ñ¡¿ò¹¹³É±Ø£¬Ë«»÷ÏÔʾ¸Ã¸´Ñ¡¿ò¡£Äã²»±Ø½«²¼¶ûÖµÃè»æÆ÷ÓÃÓÚÒ»¸ö²¼¶ûÖµ±à¼Æ÷¡ª¡ªÄã¿ÉÒÔÓÃ1»ò0£¬»òÕßon/off´ËÀàµÄ¶«Î÷À´Ìæ´ú²¼¶ûÖµÃè»æÆ÷À´ÏÔʾ±»Ñ¡»òδѡ״̬¡£ (choices,allowOthers=False)£¬ÆäÖвÎÊýchoicesÊÇ×Ö·û´®µÄÑ¡ÏîÁÐ±í¡£Èç¹ûallowOthersΪTrue£¬ÄÇô³ýÁËÏÂÀÁбíÖеÄÑ¡ÏîÍ⣬Óû§¿ÉÒÔ×Ô¼º¼üÈëÒ»¸ö×Ö·û´®¡£ wx.grid.GridCellChoiceEditor ¸´ºÏ¿ò±à¼Æ÷¡£Õâ¸ö¹¹Ô캯ÊýÒªÇóÁ½¸ö²ÎÊý wx.grid.GridCellEnumEditor ¼Ì³Ð×Ôwx.grid.GridCellChoiceEditor£¬½«Êý×Ö»»³É µÈͬµÄ×Ö·û´®³ÊÏÖ¸øÓû§¡£ ÓÃÓÚÊäÈëÖ¸¶¨¾«¶ÈµÄ¸¡µãÊý¡£Õâ¸ö¹¹Ô캯ÊýÒªÇóµÄ²ÎÊýÊÇ(width=-1£¬precision=-1)£¬²ÎÊýµÄ ÒâÒåÓëÏàÓ¦Ãè»æÆ÷ÖеÄÒâ˼һÑù¡£Ê¹ÓÃÕâ¸ö±à¼Æ÷ÊäÈëµÄÊý±»×ª»»µ½ÏàÓ¦µÄλÊýºÍ¾«¶È¡£ ÕûÊý±à¼Æ÷¡£¸Ã¹¹Ô캯ÊýÒªÇóµÄ²ÎÊýÊÇ(min=-1, max=-1)¡£Èç¹ûminºÍmaxÉèÖÃÁË£¬ÄÇôÕâ¸ö±à¼Æ÷½«½øÐз¶Î§¼ì²é£¬²¢·ñ¾öÊÔͼ ÊäÈ뷶Χ֮ÍâµÄÊý¡£µ¥Ôª¸ñµÄÓұ߻áÓÐÒ»¸öspinner¿Ø¼þ£¬Ê¹Óû§¿ÉÒÔͨ¹ýÊó±êÀ´¸Ä±äµ¥Ôª¸ñÖеÄÖµ¡£ wx.grid.GridCellFloatEditor wx.grid.GridCellNumberEditor wx.grid.GridCellTextEditor ´´½¨×Ô¶¨ÒåµÄ±à¼Æ÷
ĬÈϵÄÎı¾±à¼Æ÷¡£ Äã¿ÉÒÔÏë´´½¨Ò»¸ö×Ô¶¨ÒåµÄ±à¼Æ÷×ÔÐд¦ÀíÊäÈëµÄÊý¾Ý¡£Òª´´½¨Äã×Ô¼ºµÄ±à¼Æ÷£¬ÄãÒª´´½¨
wx.grid.PyGridCellEditorµÄÒ»¸ö×ÓÀà¡£Õâ±ÈÃè»æÆ÷¸´ÔÓЩ¡£±í14.6ÏÔʾÁ˼¸¸öÄãÐè
Òª¸²¸ÇµÄ·½·¨¡£
±í14.7ÏÔʾÁ˸¸ÀàµÄ¸ü¶àµÄ·½·¨£¬Äã¿ÉÒÔ¸²¸ÇËüÃÇÒԸĽøÄãµÄ×Ô¶¨Òå±à¼Æ÷µÄÍâ¹Û¡£ ±í14.6 Äã±ØÐ븲¸ÇµÄPyGridCellEditorµÄ·½·¨
BeginEdit(row, col, grid) ²ÎÊýrow,colÊǵ¥Ôª¸ñµÄ×ø±ê£¬gridÊǰüº¬µÄµ¥Ôª¸ñ¡£¸Ã·½·¨ÔÚ±à¼ÇëÇóÖ®³õ±»µ÷Óá£Ôڸ÷½·¨ÖУ¬±à¼Æ÷ÓÃÓڵõ½Êý¾ÝÈ¥±à¼£¬²¢Îª±à¼×ö×¼¹¤×÷¡£ ·µ»Ø¸Ã±à¼Æ÷µÄÒ»¸ö¿½±´¡£ Clone() ´´½¨±»±à¼Æ÷ʹÓõĿؼþ¡£²ÎÊýparentÊÇÈÝÆ÷£¬idÊÇÒª´´½¨µÄ¿Ø¼þµÄ±êʶ·û£¬Create(parent, id, evtHandler) evtHandlerÊǰ󶨵½¸ÃпؼþµÄʼþ´¦ÀíÆ÷¡£ EndEdit(row, col, grid) Èç¹û±à¼ÒѾ¸Ä±äÁ˵¥Ôª¸ñµÄÖµ£¬Ôò·µ»ØTrue¡£ÈÎºÎÆäËüµÄ±ØÐëµÄÇå³ý¹¤×÷¶¼Ó¦¸ÃÔÚÕâÀï±»Ö´ÐС£ Èç¹û±à¼±»È¡ÏûÁË£¬Ôò¸Ã·½·¨±»µ÷ÓᣴËʱӦ¸Ã½«¿Ø¼þÖеÄÖµ»¹ÔΪ³õʼֵ¡£ Reset() ±í14.7 ¿ÉÒÔ¸²¸ÇµÄPyGridCellEditorµÄ·½·¨
Destroy() µ±±à¼±»Ïú»Ùʱ£¬Ö´ÐÐÈκÎ×îÖÕµÄÇå³ý¹¤×÷¡£ Èç¹ûevtÖеļü±»°´Ï»áÆô¶¯±à¼Æ÷£¬Ôò·½·¨·µ»ØTrue¡£F2¼üʼÖÕ¶¼ÓÃÓÚÆô¶¯±à¼Æ÷¡£Þ§Àà¼ÙÉèÈÎÒâ¼üµÄ°´Ï¶¼½«Æô¶¯±à¼Æ÷£¬³ý·ÇËü±»ÐÞ¸ÄΪͨ¹ýcontrol,alt,»òshiftÀ´Æô¶¯¡£ IsAcceptedKey(evt) ²ÎÊýrectÊÇÒ»¸öwx.Rect£¨Ê¹ÓÃÂß¼µ¥Î»£©£¬attrÊÇÓëµ¥Ôª¸ñÏà¹ØµÄPaintBackground(rect, attr) wc.grid.GridCellAttr¡£¸Ã·½·¨µÄÄ¿µÄÊÇ»æÖÆÃ»Óб»±à¼Æ÷¿Ø¼þËù¸²¸ÇµÄµ¥Ôª¸ñµÄ²¿·Ö¡£»ùÀàͨ¹ýÊôÐԵõ½±³¾°É«²¢Ê¹Óõõ½µÄ±³¾°É«Ìî³ä¾ØÐΡ£ SetSize(rect) rectÊÇÒ»¸ö¸Ã¿Ø¼þÔÚÆÁÄ»ÉϵÄÂß¼³ß¶ÈµÄwx.Rect¡£Èç¹û±ØÒªµÄ»°£¬¿ÉÒÔʹÓø÷½·¨À´½«¿Ø¼þ¶¨Î»ÔڸþØÐÎÄÚ¡£ ²ÎÊýshowÊÇÒ»¸ö²¼¶ûÖµ£¬Ëü¾ö¶¨ÊÇ·ñÏÔʾ±à¼Æ÷£¬attrÊÇÏà¹Øµ¥Ôª¸ñµÄÊôÐÔʵÀý¡£µ÷Óø÷½·¨À´ÏÔʾ»òÒþ²Ø±à¼Æ÷¡£ µ±±à¼Æ÷ͨ¹ýÔÚµ¥Ôª¸ñÉϵÄÒ»¸öÊó±êÇû÷±»Æô¶¯Ê±£¬¸Ã·½·¨±»µ÷ÓÃÀ´ÔÊÐí±à¼Æ÷½«¸ÃÇû÷ÓÃÓÚ×Ô¼ºµÄÄ¿µÄ¡£ Èç¹û±à¼Í¨¹ýÒ»¸ö°´¼üµÄ°´Ñ¹±»Æô¶¯ÁË£¬ÄÇô¸Ã·½·¨±»µ÷ÓÃÀ´ÔÊÐí±à¼Æ÷¿Ø¼þʹÓøð´¼ü£¬Èç¹ûÄãÏëµÄ»°¡££¨ÀýÈ磬ͨ¹ýʹÓÃËü×÷Ϊʵ¼Ê±à¼Æ÷µÄÒ»²¿·Ö£©¡£ Show(show, attr) StartingClick() StartingKey(evt) Ò»µ©ÄãµÄ±à¼Æ÷Íê³ÉÁË£¬Äã¾Í¿ÉÒÔʹÓÃSetCellEditor·½·¨½«ËüÉèÖÃΪÈκε¥Ôª¸ñµÄ±à¼Æ÷¡£Àý14.8ÏÔʾÁËÒ»¸ö×Ô¶¨Òå±à¼Æ÷µÄʾÀý£¬Õâ¸öÀý×Ó×Ô¶¯½«ÄãÊäÈëµÄÎı¾×ª»»Îª´óд¡£ Àý14.8 ´´½¨×Ô¶¨ÒåµÄ´óд±à¼Æ÷
Çл»ÐкÅÏÔʾ 1 #-*- encoding:UTF-8 -*- 2 import wx
3 import wx.grid 4 import string 5
6 class UpCaseCellEditor(wx.grid.PyGridCellEditor):#ÉùÃ÷±à¼Æ÷
7 def __init__(self):
8 wx.grid.PyGridCellEditor.__init__(self) 9
10 def Create(self, parent, id, evtHandler):#´´½¨ 11 \
12 Called to create the control, which must derive from wx.Control.
13 *Must Override* 14 \
15 self._tc = wx.TextCtrl(parent, id, \) 16 self._tc.SetInsertionPoint(0) 17 self.SetControl(self._tc) 18
19 if evtHandler:
20 self._tc.PushEventHandler(evtHandler) 21
22 self._tc.Bind(wx.EVT_CHAR, self.OnChar) 23
24 def SetSize(self, rect): 25 \
26 Called to position/size the edit control within the cell rectangle. 27 If you don't fill the cell (the rect) then be sure to override
28 PaintBackground and do something meaningful there.
29 \
30 self._tc.SetDimensions(rect.x, rect.y, rect.width+2, rect.height+2,
31 wx.SIZE_ALLOW_MINUS_ONE) 32
33 def BeginEdit(self, row, col, grid): 34 \ 35 Fetch the value from the table and prepare the edit control
36 to begin editing. Set the focus to the edit control.
37 *Must Override* 38 \
39 self.startValue = grid.GetTable().GetValue(row, col)
40 self._tc.SetValue(self.startValue) 41 self._tc.SetInsertionPointEnd() 42 self._tc.SetFocus()
43 self._tc.SetSelection(0, self._tc.GetLastPosition()) 44
45 def EndEdit(self, row, col, grid): 46 \
47 Complete the editing of the current cell. Returns True if the value
48 has changed. If necessary, the control may be destroyed.
49 *Must Override* 50 \
51 changed = False 52
53 val = self._tc.GetValue()