繁体   English   中英

wxPython:将图像居中放置在面板中

[英]wxPython: centering an image in a panel

我有一个带有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)

您需要将图像添加到带有边框的boxSizer 您可以编写一个imagePanel类来实现此目的。

然后,您应该能够调用SetBackgroundColourImgPanels更改的边框(面板)色当过需要。

这是一个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)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM