Größen Sie einen Rahmen für ein Bild in WXPython
-
28-10-2019 - |
Frage
Ich mache ein Programm mit einem Bild für eine Kulisse, und ich versuche, den Rahmen genau das Bild zu machen.
Es ist einfach, den Rahmen mit den Abmessungen des Bildes zu initiieren:
wx.Frame.__init__(self, parent, title=title, size=(500, 300))
Da dies jedoch auch die Grenzen und die Header des Fensters ausmacht, ist dies nicht ganz genau. Was kann ich tun, wenn ich die Pixelgröße nicht manuell einstellen kann (was sowieso nicht konsistent).
EDIT: Ich habe eine Antwort gefunden, aber es sieht so aus, als ob ich mich für ein paar Stunden nicht selbst bewerben kann. In der Zwischenzeit...
Backdrop = wx.Bitmap("image.png")
self.SetClientSize((Backdrop.GetWidth(), Backdrop.GetHeight()))
Lösung
Sie könnten dasselbe mit einem Sizer erreichen, was die Dinge auch erleichtern würde, wenn Sie jemals andere Elemente neben dem Bild einbeziehen und steuern müssen, wie sie mit dem Rahmen skalieren.
Hier ist ein grundlegendes Beispiel für einen Rahmen, der sich an ein Bild anpasst.
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()