Transparentes Hintergrundbild

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

Transparentes Hintergrundbild

Beitragvon Kornfeld67 » 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...

  1. import wx
  2. import time
  3.  
  4. class gui(wx.Frame):
  5.  
  6.     def __init__(self,parent,id):
  7.        
  8.         # Oeffnen eines Fensters / Panel
  9.         wx.Frame.__init__(self,parent,id,'IRBAN',size=(1000,800))
  10.         Bedienung = wx.Panel(self)
  11.        
  12.         try:
  13.             # Bild laden
  14.             image_file = 'Sonne.jpg'
  15.             bmp1 = wx.Image(image_file, wx.BITMAP_TYPE_ANY).ConvertToBitmap()
  16.             # Bild oben links platzieren
  17.             self.bitmap1 = wx.StaticBitmap(self, -1, bmp1, (0, 0))
  18.         except IOError:
  19.             print "Image file %s not found" % imageFile
  20.             raise SystemExit
  21.        
  22.         #Startbutton erstellen
  23.         Startbutton = wx.Button(Bedienung,label="Bewegung starten",pos=(800,100),size=(150,50))
  24.         self.Bind(wx.EVT_BUTTON,self.Startbutton,Startbutton)
  25.  
  26.         #Button für Abbruch --> spaeter Interruptsteuerung!
  27.         Abbrechen = wx.Button(Bedienung,label="STOPP!!",pos=(800,200),size=(150,50))
  28.         self.Bind(wx.EVT_BUTTON,self.Abbrechen,Abbrechen)
  29.  
  30.         #Exit Button erstellen
  31.         Exitbutton = wx.Button(Bedienung,label="Fenster schliessen",pos=(800,300),size=(150,50))
  32.         self.Bind(wx.EVT_BUTTON,self.Exitbutton,Exitbutton)
  33.  
  34.         #Fenster schliessen bei Fenster schliessen (Kreuz)
  35.         self.Bind(wx.EVT_CLOSE, self.closewindow)
  36.  
  37.         #Menuebar erstellen
  38.         status=self.CreateStatusBar()
  39.         Menuebar=wx.MenuBar()
  40.         Erste = wx.Menu()
  41.         Zweite = wx.Menu()
  42.         Erste.Append(wx.NewId(),"Was auch immer", "Zeig mir was auch immer")
  43.         Erste.Append(wx.NewId(),"Was auch immer1", "Zeig mir was auch immer1")
  44.         Zweite.Append(wx.NewId(),"Was auch immer", "Zeig mir was auch immer")
  45.         Zweite.Append(wx.NewId(),"Was auch immer1", "Zeig mir was auch immer1")
  46.         Menuebar.Append(Erste,"Erste")
  47.         Menuebar.Append(Zweite,"Zweite")
  48.         self.SetMenuBar(Menuebar)
  49.  
  50.         #Slider
  51.  
  52.         Uhrzeit = wx.Slider(Bedienung, -1, 1, 1, 12,pos=(100,100), size=(350,1), style=wx.SL_AUTOTICKS | wx.SL_LABELS)
  53.         Uhrzeit.SetTickFreq(5)
  54.         Neigung = wx.Slider(Bedienung, -1, 0, -15, 15,pos=(100,300), size=(350,1), style=wx.SL_AUTOTICKS | wx.SL_LABELS)
  55.         Neigung.SetTickFreq(5)
  56.         Frequenz = wx.Slider(Bedienung, -1, 0, 0, 115,pos=(100,500), size=(350,1), style=wx.SL_AUTOTICKS | wx.SL_LABELS)
  57.         Frequenz.SetTickFreq(5)
  58.  
  59.  
  60.         #Statischer Text zur Beschriftung der Slider
  61.         font = wx.Font(18, wx.FONTFAMILY_DECORATIVE, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_BOLD, False)
  62.         BezUhr = wx.StaticText(Bedienung,-1, "Position der Bewegung (Modell Uhr)",(75,50),(260,-1),wx.ALIGN_CENTER)
  63.         BezUhr.SetForegroundColour('black')
  64.         BezUhr.SetFont(font)
  65.         BezNei = wx.StaticText(Bedienung,-1, "Neigewinkel zur vollen h",(135,250),(260,-1),wx.ALIGN_CENTER)
  66.         BezNei.SetForegroundColour('black')
  67.         BezNei.SetFont(font)
  68.         BezFre = wx.StaticText(Bedienung,-1, "Schritte pro min",(135,450),(260,-1),wx.ALIGN_CENTER)
  69.         BezFre.SetForegroundColour('black')
  70.         BezFre.SetFont(font)
  71.  
  72.         #Hintergrundbild
  73.        
  74.  
  75.          
  76.        
  77.     def Startbutton(self,event):
  78.         self.Close(True)
  79.  
  80.     def Abbrechen(self,event):
  81.         self.Close(True)
  82.  
  83.     def Exitbutton(self,event):
  84.         self.Close(True)
  85.  
  86.     def closewindow(self,event):
  87.         self.Destroy()
  88.  
  89.  
  90.  
  91. if __name__ == '__main__':
  92.     app=wx.App()
  93.     frame = gui(parent=None,id=-1)
  94.     frame.Show()
  95.     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

Re: Transparentes Hintergrundbild

Beitragvon Kornfeld67 » Donnerstag 10. Dezember 2015, 08:10

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

Re: Transparentes Hintergrundbild

Beitragvon Piet Lotus » 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/03/18/wxpython-putting-a-background-image-on-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

Re: Transparentes Hintergrundbild

Beitragvon Kornfeld67 » 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: 74
Registriert: Dienstag 14. November 2006, 10:40

Re: Transparentes Hintergrundbild

Beitragvon Piet Lotus » 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

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder