在WxPython中将帧大小调整为图像

时间:2011-09-08 17:26:53

标签: image wxpython frame image-size

我正在制作一个带有背景图像的程序,而我正在尝试的是让框架精确地适合图像。

使用图像尺寸启动框架很容易:

wx.Frame.__init__(self, parent, title=title, size=(500, 300))

但是因为这也考虑了窗口的边框和标题,这不完全准确。如果没有手动调整像素大小(无论如何都不能保持一致的跨OS),我该怎么办?

编辑:我找到了答案,但看起来我几个小时都无法自行回答。在此期间......

Backdrop = wx.Bitmap("image.png")
self.SetClientSize((Backdrop.GetWidth(), Backdrop.GetHeight()))

1 个答案:

答案 0 :(得分:1)

你可以使用sizer完成同样的事情,如果你需要在图像旁边包含其他项目并控制它们如何随框架缩放,这也会使事情变得更容易。

这是一个框架的基本示例,它调整自身大小以适合图像。

import wx

class Frame(wx.Frame):
  def __init__(self, parent, id, title, img_path):
    wx.Frame.__init__(self, parent, id, title, 
                      style=wx.DEFAULT_FRAME_STYLE ^ wx.RESIZE_BORDER)

    image = wx.StaticBitmap(self, wx.ID_ANY)
    image.SetBitmap(wx.Bitmap(img_path))

    sizer = wx.BoxSizer()
    sizer.Add(image)
    self.SetSizerAndFit(sizer)

    self.Show(True)

app = wx.App()
frame = Frame(None, wx.ID_ANY, 'Image', '/path/to/file.png')
app.MainLoop()