wxFrame auf Bitmapgröße einstellen

Plattformunabhängige GUIs mit wxWidgets.
Antworten
The Hit-Man
User
Beiträge: 435
Registriert: Montag 20. Februar 2006, 18:11
Wohnort: Menden / Sauerland
Kontaktdaten:

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?
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.
The Hit-Man
User
Beiträge: 435
Registriert: Montag 20. Februar 2006, 18:11
Wohnort: Menden / Sauerland
Kontaktdaten:

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?
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.
The Hit-Man
User
Beiträge: 435
Registriert: Montag 20. Februar 2006, 18:11
Wohnort: Menden / Sauerland
Kontaktdaten:

leuchtet ein ;)
Antworten