Transparentes Hintergrundbild

Plattformunabhängige GUIs mit wxWidgets.
Antworten
Kornfeld67
User
Beiträge: 7
Registriert: Montag 7. Dezember 2015, 15:02

Montag 7. Dezember 2015, 15:23

Moin Moin,

ich habe folgendes Problem: Ich möchte ein GUI mit wxpython erstellen. Ich habe ein paar Slider und Buttons. In dieses GUI füge ich ein Bild ein. Dieses soll eigentlich im Hintergrund sein. Es verdeckt aber alles.

Wie bekomme ich das transparent? Oder eben hinter die Buttons etc? Interessant dafür sind denke ich nur Zeilen im Bereich um die 20.

Danke für eure Hilfe...

Code: Alles auswählen

import wx
import time

class gui(wx.Frame):

    def __init__(self,parent,id):
       
        # Oeffnen eines Fensters / Panel
        wx.Frame.__init__(self,parent,id,'IRBAN',size=(1000,800))
        Bedienung = wx.Panel(self)
        
        try:
            # Bild laden
            image_file = 'Sonne.jpg'
            bmp1 = wx.Image(image_file, wx.BITMAP_TYPE_ANY).ConvertToBitmap()
            # Bild oben links platzieren
            self.bitmap1 = wx.StaticBitmap(self, -1, bmp1, (0, 0))
        except IOError:
            print "Image file %s not found" % imageFile
            raise SystemExit
       
        #Startbutton erstellen
        Startbutton = wx.Button(Bedienung,label="Bewegung starten",pos=(800,100),size=(150,50))
        self.Bind(wx.EVT_BUTTON,self.Startbutton,Startbutton)

        #Button für Abbruch --> spaeter Interruptsteuerung!
        Abbrechen = wx.Button(Bedienung,label="STOPP!!",pos=(800,200),size=(150,50))
        self.Bind(wx.EVT_BUTTON,self.Abbrechen,Abbrechen)

        #Exit Button erstellen
        Exitbutton = wx.Button(Bedienung,label="Fenster schliessen",pos=(800,300),size=(150,50))
        self.Bind(wx.EVT_BUTTON,self.Exitbutton,Exitbutton)

        #Fenster schliessen bei Fenster schliessen (Kreuz)
        self.Bind(wx.EVT_CLOSE, self.closewindow)

        #Menuebar erstellen
        status=self.CreateStatusBar()
        Menuebar=wx.MenuBar()
        Erste = wx.Menu()
        Zweite = wx.Menu()
        Erste.Append(wx.NewId(),"Was auch immer", "Zeig mir was auch immer")
        Erste.Append(wx.NewId(),"Was auch immer1", "Zeig mir was auch immer1")
        Zweite.Append(wx.NewId(),"Was auch immer", "Zeig mir was auch immer")
        Zweite.Append(wx.NewId(),"Was auch immer1", "Zeig mir was auch immer1")
        Menuebar.Append(Erste,"Erste")
        Menuebar.Append(Zweite,"Zweite")
        self.SetMenuBar(Menuebar)

        #Slider

        Uhrzeit = wx.Slider(Bedienung, -1, 1, 1, 12,pos=(100,100), size=(350,1), style=wx.SL_AUTOTICKS | wx.SL_LABELS)
        Uhrzeit.SetTickFreq(5)
        Neigung = wx.Slider(Bedienung, -1, 0, -15, 15,pos=(100,300), size=(350,1), style=wx.SL_AUTOTICKS | wx.SL_LABELS)
        Neigung.SetTickFreq(5)
        Frequenz = wx.Slider(Bedienung, -1, 0, 0, 115,pos=(100,500), size=(350,1), style=wx.SL_AUTOTICKS | wx.SL_LABELS)
        Frequenz.SetTickFreq(5)


        #Statischer Text zur Beschriftung der Slider
        font = wx.Font(18, wx.FONTFAMILY_DECORATIVE, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_BOLD, False)
        BezUhr = wx.StaticText(Bedienung,-1, "Position der Bewegung (Modell Uhr)",(75,50),(260,-1),wx.ALIGN_CENTER)
        BezUhr.SetForegroundColour('black')
        BezUhr.SetFont(font)
        BezNei = wx.StaticText(Bedienung,-1, "Neigewinkel zur vollen h",(135,250),(260,-1),wx.ALIGN_CENTER)
        BezNei.SetForegroundColour('black')
        BezNei.SetFont(font)
        BezFre = wx.StaticText(Bedienung,-1, "Schritte pro min",(135,450),(260,-1),wx.ALIGN_CENTER)
        BezFre.SetForegroundColour('black')
        BezFre.SetFont(font)

        #Hintergrundbild
        

         
        
    def Startbutton(self,event):
        self.Close(True)

    def Abbrechen(self,event):
        self.Close(True)

    def Exitbutton(self,event):
        self.Close(True)

    def closewindow(self,event):
        self.Destroy()



if __name__ == '__main__':
    app=wx.App()
    frame = gui(parent=None,id=-1)
    frame.Show()
    app.MainLoop()
Zuletzt geändert von Anonymous am Montag 7. Dezember 2015, 16:35, insgesamt 1-mal geändert.
Grund: Quelltext in Python-Codebox-Tags gesetzt.
Kornfeld67
User
Beiträge: 7
Registriert: Montag 7. Dezember 2015, 15:02

Donnerstag 10. Dezember 2015, 08:10

Hat keiner eine Idee? Oder eine Meinung ob das möglich ist?
Piet Lotus
User
Beiträge: 78
Registriert: Dienstag 14. November 2006, 10:40

Sonntag 13. Dezember 2015, 00:55

Hallo Kornfeld67,
sorry, ich konnte mich nicht früher melden, ich hab zu viel um die Ohren :(
Und jetzt ist es auch schon wieder zu spät, deshalb auch wieder nur kurz.
Die Seite kennst du? http://www.blog.pythonlibrary.org/2010/ ... n-a-panel/
Wenn ich es richtig verstanden habe, ist dort die Lösung deines Problems beschrieben :D
Ich hoffe, es hilft.
Viele Grüße
Piet
Kornfeld67
User
Beiträge: 7
Registriert: Montag 7. Dezember 2015, 15:02

Montag 14. Dezember 2015, 12:42

Ja ich habe diesen blog schon gesehen... und das Problem ist, dass dies nicht funktioniert... Selbst wenn ich den kompletten code dort kopiere und den Namen eines anderen Bildes einfüge sehe ich dort kein Bild? Du??
Piet Lotus
User
Beiträge: 78
Registriert: Dienstag 14. November 2006, 10:40

Montag 14. Dezember 2015, 20:36

Hallo Kornfeld67,
ja bei mir funktioniert die Lösung aus dem Link. Ich habe ein Hintergrundbild und Knöpfe drauf.
Welchen Quellcodeteil aus dem Link hast du kopiert? Der erste Teil aus dem Link mit

Code: Alles auswählen

bmp1 = wx.Image(image_file, wx.BITMAP_TYPE_ANY).ConvertToBitmap()
self.bitmap1 = wx.StaticBitmap(self, -1, bmp1, (0, 0))
erinnert stark an deine gepostete "Lösung". Hast du die kopiert und probiert? :)
So sollte man es ja nicht machen. Diese Lösung funktioniert bei mir auch nicht, aber darunter ist der Teil mit

Code: Alles auswählen

def OnEraseBackground(self, evt):
    """
    Add a picture to the background
    """
    ....
drin und diese Vorgehensweise funktioniert bei mir wunderbar :)
Viele Grüße
Piet
Antworten