Question

Je fais un programme avec une image pour toile de fond, et ce que je suis en train de faire est d'obtenir le cadre pour adapter l'image avec précision.

Il est facile d'initier le cadre avec les dimensions de l'image:

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

mais parce que cela représente également les frontières et en-tête de la fenêtre, ce n'est pas tout à fait exact. Court de régler manuellement la taille des pixels (ce qui ne serait pas compatible cross-OS de toute façon), que puis-je faire?

Edit: Je l'ai trouvé une réponse, mais il semble que je ne peux pas auto-réponse pendant quelques heures. En attendant ...

Backdrop = wx.Bitmap("image.png")
self.SetClientSize((Backdrop.GetWidth(), Backdrop.GetHeight()))
Était-ce utile?

La solution

Vous pouvez accomplir la même chose avec un calibreur, ce qui serait aussi rendre les choses plus facile si vous avez besoin d'inclure d'autres éléments à côté de l'image et de contrôler leur échelle avec le cadre.

Voici un exemple de base d'un cadre qui se redimensionne pour adapter une image.

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()
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top