2011-11-29 16 views
2

繪製這裏是我的工具欄的代碼:奇怪wx.CheckBox在wx.ToolBar

JS_TOOLBAR_BUTTON = 0 
JS_TOOLBAR_SEPARATOR = 1 
JS_TOOLBAR_MONTHCONTROL = 2 
JS_TOOLBAR_CHECKBOX = 3 

def createToolbar(self): 
    self.tb = wx.ToolBar(self, style=wx.TB_HORIZONTAL|wx.NO_BORDER|wx.TB_FLAT) 
    self.tb.SetToolBitmapSize((16,16))   
    id=0 
    for toolType,hint,pic,proc in self.toolbarData(): 
     if toolType==JS_TOOLBAR_BUTTON: 
      id += 10 
      self.tb.AddLabelTool(id, hint, pic.GetBitmap(), shortHelp=hint) 
      self.Bind(wx.EVT_TOOL, proc, id=id) 
      self.Bind(wx.EVT_TOOL_RCLICKED, proc, id=id) 
     elif toolType==JS_TOOLBAR_SEPARATOR: 
      self.tb.AddSeparator() 
     elif toolType==JS_TOOLBAR_CHECKBOX:   
      self.tb.AddControl(wx.CheckBox(self.tb, label=hint)) 

    self.tb.Realize()  
def toolbarData(self): 
    return((JS_TOOLBAR_BUTTON, u"Добавить работника", pictures.add_staff, self.grid.on_insert),     
      (JS_TOOLBAR_BUTTON, u"Удалить работника", pictures.del_staff, self.grid.on_delete),   
      (JS_TOOLBAR_SEPARATOR, None, None, None), 
      (JS_TOOLBAR_CHECKBOX, u"Показывать только работающих", None, self.grid.on_delete)) 

因此,我有複選框外怪角:

Image

的Python 2.7, wx-2.9.2,在Win7x64下

+0

東西肯定已經在2.9與工具條渲染改變,但我已經能夠找到它的唯一信息與wxWidgets的直接交易。如果您可以切換,則此問題在2.8中不會發生。 –

+0

我的用戶繪製的wxGrid在2.8中非常閃爍......在2.9的一切正常,而不是這個麻煩。在這裏找到解決方案真是太好了...... –

回答

1

對我來說,解決方案是使用CheckLabelTool而不是CheckBox:

enter image description here

self.tb.AddCheckLabelTool(id, hint, pic.GetBitmap(), shortHelp=hint)     
self.tb.ToggleTool(id, self.grid.Table.actualOnly) 
self.Bind(wx.EVT_TOOL, proc, id=id)