首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

在wxGrid中增多wxDataPickerCtrl控件

2012-09-08 
在wxGrid中增加wxDataPickerCtrl控件编写环境:1、ActivePython-2.7.2.5-win32-x862、wxPython2.8-win32-unic

在wxGrid中增加wxDataPickerCtrl控件

编写环境:

1、ActivePython-2.7.2.5-win32-x86

2、wxPython2.8-win32-unicode-2.8.12.1-py27

3、wxFormBuilder_v3.3.3-beta

?

以下代码是演示如何在wxGrid中增加wxDataPickerCtrl控件的代码,是我查了好久才找到的。

import wx import wx.grid class DatePickerCellEditor(wx.grid.PyGridCellEditor):     def __init__(self):         wx.grid.PyGridCellEditor.__init__(self)     def Create(self, parent, id, evtHandler):         """         Called to create the control, which must derive from wx.Control.         *Must Override*         """         self._tc = wx.DatePickerCtrl(parent, id, size=(120,-1), style=wx.DP_DROPDOWN | wx.DP_SHOWCENTURY)         self.SetControl(self._tc)         if evtHandler:             self._tc.PushEventHandler(evtHandler)     def SetSize(self, rect):         """         Called to position/size the edit control within the cell rectangle.         If you don't fill the cell (the rect) then be sure to override         PaintBackground and do something meaningful there.         """         self._tc.SetDimensions(rect.x, rect.y, rect.width+2, rect.height+2, wx.SIZE_ALLOW_MINUS_ONE)     def BeginEdit(self, row, col, grid):         """         Fetch the value from the table and prepare the edit control         to begin editing.  Set the focus to the edit control.         *Must Override*         """         s = grid.GetTable().GetValue(row, col)         d = wx.DateTime.Now()         try:             d.SetDay(int(s[:2]))             d.SetMonth(int(s[2:4])-1)             d.SetYear(int(s[4:8]))             self._tc.SetValue(d)         except:             pass         self.startValue = s         print self.startValue         #print 'self.startValue', self.startValue, type(self.startValue)         self._tc.SetValue(d)         #self._tc.SetInsertionPointEnd()         self._tc.SetFocus()         #self._tc.SetSelection(0, self._tc.GetLastPosition())     def EndEdit(self, row, col, grid):         """         Complete the editing of the current cell. Returns True if the value         has changed.  If necessary, the control may be destroyed.         *Must Override*         """         changed = False         #val = str(self._tc.GetValue())         d = self._tc.GetValue()         print 'd', d         month = d.GetMonth()         month = month+1         month = str(month)         if len(month)<2:             month = '0'+month         #val = str(d.GetDay()) + '-'+month + '-'+str(d.GetYear())        val = str(d.GetYear()) + '-' + month + '-' + str(d.GetDay())         print 'val, self.startValue',val, self.startValue         if val != self.startValue:             changed = True             grid.GetTable().SetValue(row, col, val) # update the table         self.startValue = ''         #self._tc.SetValue('')         return changed     def Reset(self):         """         Reset the value in the control back to its starting value.         *Must Override*         """         self._tc.SetValue(self.startValue)         #self._tc.SetInsertionPointEnd()     def Clone(self):         """         Create a new object which is the copy of this one         *Must Override*         """         return DatePickerCellEditor() class TestFrame(wx.Frame):     def __init__(self):         wx.Frame.__init__(self, None, title="Grid Editor",                           size=(640,480))         grid = wx.grid.Grid(self)         grid.CreateGrid(50,50)         grid.SetDefaultEditor(DatePickerCellEditor()) app = wx.PySimpleApp() frame = TestFrame() frame.Show() app.MainLoop() 

?

热点排行