我有一个带有StaticBitmap图像的GridSizer.我想将每个图像放在他们自己的面板中,这样我就可以更改背景颜色以突出显示图像(如果已选中).但是,当我尝试这样做时,图像不会在其面板中居中,突出显示的背景颜色仅出现在两个边框上.如何在面板中央制作图像,以便每个面板周围都有相同的边框?
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)
Run Code Online (Sandbox Code Playgroud)
您需要将图像添加到boxSizer带边框的图像中.您可以编写一个imagePanel类来实现它.
然后,您应该可以在需要时调用 SetBackgroundColour您ImgPanels更改边框(面板)颜色.
这是一堂课的一个非常粗略的例子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)
Run Code Online (Sandbox Code Playgroud)