Dimensionare una cornice su un'immagine in wxpython
-
28-10-2019 - |
Domanda
Sto realizzando un programma con un'immagine per uno sfondo e quello che sto cercando di fare è ottenere la cornice per adattarsi all'immagine con precisione.
È facile iniziare la cornice con le dimensioni dell'immagine:
wx.Frame.__init__(self, parent, title=title, size=(500, 300))
Ma poiché questo spiega anche i bordi e l'intestazione della finestra, questo non è del tutto accurato. A corto di regolare manualmente la dimensione del pixel (che non sarebbe comunque coerente Cross-OS), cosa posso fare?
EDIT: ho trovato una risposta, ma sembra che non posso auto-risposta per alcune ore. Intanto...
Backdrop = wx.Bitmap("image.png")
self.SetClientSize((Backdrop.GetWidth(), Backdrop.GetHeight()))
Soluzione
Potresti realizzare la stessa cosa con un Sizer, che renderebbe anche le cose più facili se hai bisogno di includere altri elementi accanto all'immagine e controllare il modo in cui si ridimensionano con il frame.
Ecco un esempio di base di una cornice che si ridimensiona per adattarsi a un'immagine.
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()