2010-08-17 47 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) 
一個 非常例如粗糙