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()))
War es hilfreich?

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()
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top