find_overlapping Ausnahmen?

Fragen zu Tkinter.
Antworten
Benutzeravatar
oreagel
User
Beiträge: 9
Registriert: Donnerstag 18. Dezember 2014, 19:47

Hallo, nach längerer Zeit melde ich mich auch mal wieder :D

Folgendes:

Ich habe Kreise, die, sobald sie mit etwas in Berührung kommen, gelöscht werden sollen.
Das Problem ist nur, dass der Hintergrund (canvas.create_image) ja auch "etwas" ist, das heißt
die Kreise verschwinden nach der Erzeugung direkt wieder.
Kann ich dem find_overlapping nun eine Ausnahme hinzufügen, dass er ein bestimmtes Objekt auslässt?

Mein Code sieht momentan so aus:

Code: Alles auswählen

# ...
if canvas.find_overlapping(canvas.coords(cameronmoney)[0],canvas.coords(cameronmoney)[1],canvas.coords(cameronmoney)[2],canvas.coords(cameronmoney)[3])[0]==1:
                    canvas.delete(cameronmoney)
# ...
Jetzt ist ja das Hintergrundbild überall im Fenster, also werden die Objekte direkt gelöscht.
Kann man das umgehen?

Danke im Voraus!
BlackJack

@oreagel: Na filter das Hintergrundbild doch einfach aus dem Ergebnis von `find_overlapping()` heraus. Das was dann übrig bleibt sind die Elemente die überlappen aber nicht das Hintergrundbild sind.
Benutzeravatar
oreagel
User
Beiträge: 9
Registriert: Donnerstag 18. Dezember 2014, 19:47

Hallo,

ja das ist ja das was ich machen will, nur hab ich noch keine Möglichkeit gefunden mit find_overlapping() Ergebnisse zu filtern :oops:

Gruß
BlackJack

@oreagel: *Mit* `find_overlapping()` geht das auch nicht. Du musst das Ergebnis dieses Aufrufs filtern. Also die ID rausnehmen die das Hintergrundbild repräsentiert. Ich vermute das Ergebnis ist eine Liste. Da einfach `remove()` verwenden und den Aufruf in eine entsprechende Ausnahmebehandlung verpacken für den Fall das die ID nicht enthalten ist.
Antworten