Pregunta

Estoy haciendo un programa con una imagen para un telón de fondo, y lo que estoy tratando de hacer es obtener el marco para que se ajuste a la imagen con precisión.

Es fácil iniciar el marco con las dimensiones de la imagen:

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

Pero debido a que esto también explica los bordes y el encabezado de la ventana, esto no es del todo preciso. A falta de ajustar manualmente el tamaño del píxel (que no sería constante cruzado de todos modos), ¿qué puedo hacer?

EDITAR: He encontrado una respuesta, pero parece que no puedo respuesta durante unas horas. Mientras tanto...

Backdrop = wx.Bitmap("image.png")
self.SetClientSize((Backdrop.GetWidth(), Backdrop.GetHeight()))
¿Fue útil?

Solución

Podría lograr lo mismo con un Sizer, lo que también facilitaría las cosas si alguna vez necesita incluir otros elementos junto con la imagen y controlar cómo se escala con el marco.

Aquí hay un ejemplo básico de un marco que se cambia de tamaño para adaptarse a una imagen.

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()
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top