2017-12-29 27 views
-1

Wenn ich diesen Code ausführen (Teil eines größeren Projekts):Warum gibt mir die Methode place einen Fehler, wenn sie auf einem Objekt in Canvas verwendet wird?

def Initialize (event,tk): 
    event.delete("all") 
    parch = tk.PhotoImage(file = "Parchment.png") 
    parchment = event.create_image(175, 25, image = parch, anchor = "nw") 
    parchment.place(175, 25)` 

, die den Fehler verursacht:

parchment.place(175, 25) 
AttributeError: 'int' object has no attribute 'place' 

Technisch ist alles funktioniert gut und macht seinen Job; Aber Fehlermeldungen sind nicht wirklich gut.

+4

Anscheinend ist "Pergament" eine Zahl, die keine 'place' Methode hat. Überprüfen Sie die Dokumente, um zu sehen, was 'create_image' zurückgibt. Sind Sie sicher, dass die Methode "Parch" nicht einfach mutiert? In diesem Fall ändern Sie es in 'parch.place (175, 25)'. – Carcigenicate

+2

'create_image' und andere' create_ * 'erstellen keine Widgets, sondern Objekte auf Canvas, die keine Methoden' place() '/' grid() '/' pack() 'haben, weil sie diese nicht benötigen (weil sie keine Widgets sind). – furas

+0

Ich verstehe, dass sie diese Methoden nicht benötigen, aber ohne diese Methoden erscheint das gewünschte Bild einfach nicht – Salad

Antwort

2

Wie Sie here, die create_image Methode gibt die integer ID-Nummer des Bildobjekts sehen es schafft. Alle Methoden zum Erstellen von Canvas-Objekten geben eine solche ID zurück.

Sie können canvas methods verwenden, um mit den Objekten zu interagieren, die ihre ID erhalten (z. B. verschieben Sie sie mit der Methode .move).

+1

Ich denke, dass die obige Frage eine Roll-Back-Bearbeitung benötigt, damit diese Antwort näher verwandt ist. – Nae

+0

Das Zeug nach der Bearbeitung, wie das Bild "verloren" ist, ist eine ganz andere Frage, wirklich. –

+0

Ja, ich stimme zu. Ich [versuchte den Vorschlag] (https://meta.stackoverflow.com/q/361267/7032856) die vorherige Bearbeitung. Aber anscheinend ist es nicht genau dasselbe wie Rollback und wurde so beurteilt, als ob ich derjenige wäre, der die Frage änderte. – Nae

Verwandte Themen