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

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