Странный рисунок wx.CheckBox в wx.ToolBar - PullRequest
2 голосов
/ 29 ноября 2011

Вот код моей панели инструментов:

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

1 Ответ

1 голос
/ 07 декабря 2011

Решением для меня является использование 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) 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...