Seite 1 von 1

wxFrame auf Bitmapgröße einstellen

Verfasst: Montag 28. März 2011, 18:52
von The Hit-Man
hier erst mal mein Code:

Code: Alles auswählen

if __name__ == "__main__":
    app = wx.PySimpleApp(0)
    wx.InitAllImageHandlers()
    menu = fmenu(None, -1, "")
    menu.makeMenu ()
    
    menu.logo = wx.Bitmap('data//logo.png')
    menu.SetSize(wx.Size(menu.logo.GetWidth(), menu.logo.GetHeight()+20))
    
    app.SetTopWindow(menu)
    menu.Show()
    app.MainLoop()
wie man sieht, baue ich mir ein Menu + einer Bitmap im Frame zusammen. Ich programmiere das ganze gerade unter Linux, soll aber auch unter Windows laufen. Also so weit, läuft ja auch alles, nur die Framegrößen unterscheiden sich anscheinend. Dies ist jetzt der Code unter Linux und ich kann die Bitmap ( ein Logo ), komplett sehen, da ich ja auch das Frame resize. Ich addiere bei der Höhe 20 Pixel hinzu, damit ich es auch komplett sehen kann. Starte ich das Frame jedoch unter Windows, fehlen mir wieder einige Pixel in der Höhe. Dort mußte ich ein + 40 machen um das ganze Logo sehen zu können. Am liebsten wäre mir ja wenn ich gar keine Größenangaben machen müßte, sondern sich das Form automatisch anpaßt. Ich glaube auch, der MenüBar spielt eine Rolle. Je nach dem ob ich den weg lasse oder nicht, brauche ich die + 20 nicht. Weiß da jemand Rat, wie sich das Frame dann optimal anpassen kann, auf die Bitmap?

Re: wxFrame auf Bitmapgröße einstellen

Verfasst: Montag 28. März 2011, 20:39
von BlackJack
@The Hit-Man: Ordentlich mit Sizern arbeiten und wenn alles sichtbare gesetzt ist, also auch Menüleiste, Statusleiste, und ähnliches, die `Fit()`-Methode auf dem entsprechenden Container-Widget aufrufen.

Re: wxFrame auf Bitmapgröße einstellen

Verfasst: Montag 28. März 2011, 20:41
von The Hit-Man
naja, eigentlich nutze ich die Sizer ja. Ich hatte es auch schon so probiert, das ich die Bitmap in einen Sizer gepackt hatte, aber anscheinend liegt das Menü noch da drüber. Kann man denn ein Menü in einen Sizer packen?

Re: wxFrame auf Bitmapgröße einstellen

Verfasst: Montag 28. März 2011, 20:46
von BlackJack
@The Hit-Man: Das passiert eigentlich nur wenn beim Aufruf von `Fit()` die Menüleiste noch nicht da war. Die Methode berechnet den Platz für die enthaltenen Widgets. Für Sachen die es noch nicht gibt, kann sie natürlich auch nicht den Platz berechnen.

Re: wxFrame auf Bitmapgröße einstellen

Verfasst: Donnerstag 7. April 2011, 17:01
von The Hit-Man
leuchtet ein ;)