Fehler bei übergabe von Objekt

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
DaZeller
User
Beiträge: 14
Registriert: Sonntag 8. Februar 2015, 21:05

Hallo zusammen,

die folgenden Code-zeilen platzieren einen Text auf ein Bild.
Eigentlich wollte ich durch "BackgroundDummy" vermeiden, dass mein Original "Versaut" ist, fall mir das Ergebnis von "callbackPreview" nicht gefällt.
Beim erneuten Aufruf sollte also der unveränderte "Background" wieder zur Verfügung stehen.

Code: Alles auswählen

from Tkinter import *
Background = Image.open("Hintergrund_1.png")

def callbackPreview():
	BackgroundDummy = Background

	# Text auf dem hintergrund platzieren
	draw = ImageDraw.Draw(BackgroundDummy)
	draw.text(TextPos, TextBoxDedication.get("1.0",END), font=font)
	del draw
Mich beschleicht jedoch die Vermutung, dass ich mit "BackgroundDummy = Background" keine Kopie von "Background" anlege, sondern stattdessen nur die Speicheradresse von "Background" an "BackgroundDummy" übergebe (ich mir somit selbst in's Knie schieße... :cry: ).

Kann mir jemand sagen, wie ich das Richtigerweise tun müsste?

Vorab vielen Dank und viele Grüße

Michael Zeller
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Das hast du richtig erkannt, in Python werden bei Zuweisungen nie Kopien erstellt. Wenn du eine Kopie möchtest, dann muss du diese explizit erstellen. Auch hier hilft dir die Hilfe weiter

Code: Alles auswählen

copy(self) unbound PIL.Image.Image method
    Copies this image. Use this method if you wish to paste things
    into an image, but still retain the original.
Das Leben ist wie ein Tennisball.
Sirius3
User
Beiträge: 17754
Registriert: Sonntag 21. Oktober 2012, 17:20

@DaZeller: und del ist fast immer unnötig, z.B. in Deinem Fall.
DaZeller
User
Beiträge: 14
Registriert: Sonntag 8. Februar 2015, 21:05

Vielen Dank!

Was das del angeht, muss ich gestehen, dass ich das so aus einem Beispiel entnommenhabe... Was es tut weis ich nicht :mrgreen:
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Welches Tutorial oder Buch nutzt du denn? Mir dünkt da böses...
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
Antworten