2010-08-17 32 views
2

我有一个带有StaticBitmap图像的GridSizer。我想把每个图像放在他们自己的面板中,这样我就可以改变背景颜色来突出显示一个图像,如果它已被选中。但是,当我尝试执行此操作时,图像未居中放置在面板中,高亮显示的背景色只出现在两个边框上。我怎样才能使他们的面板中心的图像,所以每边都有相同的边框?wxPython:在面板中定位图像

sizer = wx.GridSizer(rows=row,cols=cols,vgap=5) 
for fn in filenames: 
    p = wx.Panel(self.panel) 
    img = wx.Image(fn, wx.BITMAP_TYPE_ANY) 
    img2 = wx.StaticBitmap(p, wx.ID_ANY, wx.BitmapFromImage(img)) 
    img2.Bind(wx.EVT_LEFT_DOWN, self.OnClick, img2) 
    sizer.Add(p) 
self.panel.SetSizer(sizer) 

回答

5

您需要将图片添加到带有边框的boxSizer。 你可以写一个imagePanel类来实现这个。

然后,您应该可以在ImgPanels上拨打SetBackgroundColour以在需要时更改边框(面板)的颜色。

下面是一个ImgPanel

class ImgPanel(wx.Panel): 
    def __init__(self, parent, image): 
     wx.Panel.__init__(self, parent) 

     img = wx.Image(image, wx.BITMAP_TYPE_ANY) 
     self.sBmp = wx.StaticBitmap(self, wx.ID_ANY, wx.BitmapFromImage(img)) 

     sizer = wx.BoxSizer() 
     sizer.Add(item=self.sBmp, proportion=0, flag=wx.ALL, border=10) 
     self.SetBackgroundColour('green') 
     self.SetSizerAndFit(sizer) 
一个 非常例如粗糙