Guten Abend,
ich möchte in Python Transparente Bilder einfügen, doch jedesmal wenn ich das mache, werden die Bilder mit weißem Hintergrund dargestellt.
Die Formate der Bilder sind immer PNG.
Deswegen bräuchte ich Hilfe dabei die Bilder in dem Programm als transparent darzustellen.
Mfg
Transparente Bilder in Python einfügen
Du könntest die Python Imaging Library verwenden, die jedoch nicht Python 3 unterstützt. ImageTk.PhotoImage könnte für dich da interessant sein. Du musst nur sicherstellen, dass deine Bilder tatsächlich einen Alphakanal besitzen ;)
Diese Nachricht wurde maschinell erstellt und ist daher ohne Unterschrift gültig.
Für Python 3 gäbe es dann `pillow`, was so grundsätzlich die gleiche API wie `PIL` bietet.
@M96Wayne: Genau so wie welche ohne Transparenz. Du musst halt nur statt dem `PhotoImage`-Typ von `Tkinter` den aus dem `PIL.ImageTk`-Modul verwenden.
Liegt daran, dass du damit, wie die Fehlermeldung beschreibt, ein Modul aufrufst, da PIL in diesem Fall ein Package ist, das Module enthält, die wiederum Klassen enthalten.
Aufrufen musst du es dann mit "PIL.ImageTk.PhotoImage(bla)".
Aufrufen musst du es dann mit "PIL.ImageTk.PhotoImage(bla)".
Diese Nachricht wurde maschinell erstellt und ist daher ohne Unterschrift gültig.
Code: Alles auswählen
from tkinter import *
import PIL.ImageTk
from PIL import Image, ImageDraw
Fenster = Tk()
Fenster.title ("Das Spiel")
Fenster.geometry ("1280x1024")
Fenster.resizable(width=FALSE, height=FALSE)
Hintergrund = PIL.ImageTk.PhotoImage('img2.png')
a=Button(Fenster,image=Hintergrund,)
a.place(x=0,y=0,width=128,height=128)
Trzd bekomm ich immer noch einen Key Error, obwohl meine Datei im Verzeichnis ist.
Zuletzt geändert von Anonymous am Freitag 20. Juni 2014, 22:39, insgesamt 1-mal geändert.
Grund: Quelltext in Python-Code-Tags gesetzt.
Grund: Quelltext in Python-Code-Tags gesetzt.
@M96Wayne: Schau Dir mal die Dokumentation zu `PhotoImage` an, welche Argumente man da übergeben kann.
Code: Alles auswählen
from tkinter import *
import PIL.ImageTk
from PIL import Image, ImageDraw
Fenster = Tk()
Fenster.title ("Das Spiel")
Fenster.geometry ("1280x1024")
Fenster.resizable(width=FALSE, height=FALSE)
#AA = PIL.ImageTk.PhotoImage(file='Wallpaper.gif')
#A=Button(Fenster,image=AA)
#A.place(x=0,y=0,width=1280,height=1024)
Hintergrund = PIL.ImageTk.PhotoImage(file='YY.png')
a=Button(Fenster,image=Hintergrund)
a.place(x=0,y=0,width=640,height=400)
@M96Wayne: Was meinst Du mit „es hat immer noch einen Hintergrund”? Da wo das Bild transparent ist sollte jetzt die Hintergrundfarbe der Schaltfläche durchscheinen. Ist jedenfalls bei mir so.
Ja, den Hintergrund der Schaltfläche hat es bei mir auch (das Gräulich-Weiße), jedoch will ich, dass bis auf mein Symbol alles transparent ist, sodass ich wenn ich einen Hintergrund einfüge nur das Symbol sehe und nich noch die Hintergrundfarbe der Schaltfläche
@M96Wayne: Das geht nicht. Schalflächen haben immer eine Hintergrundfarbe. Was willst Du denn *eigentlich* damit erreichen?
@M96Wayne: Was bedeutet „ständig”? Man könnte schon jedes mal wenn man den Hintergrund wechselt auch ein entsprechendes Bild für die Schaltfläche erstellen.
Ich habe wahrscheinlich 50 oder mehr Hintergrundbilder, die ich da miteinbringen muss, dazu müsste ich dann ~50mal die Hintergrundfläche ändern. Ist auch nicht gerade das Wahre. Hatte gehofft man könnte es ganz Transparent machen.
@M96Wayne: Wo ist denn das Problem dabei? Wenn man den Hintergrund der Schaltfläche transparent machen könnte, dann passiert doch vom Programmablauf her genau das gleiche. Wenn man ein neues Hintergrundbild setzt, muss die Grafik auf der Schaltfläche neu berechnet werden, damit dort das neue Bild ”durchscheint” Dann gäbe es den Code schon in Tkinter. So musst Du selber ein paar Zeilen schreiben.