Problem Kombination Tkinter Canvas und SimpleDialog

Fragen zu Tkinter.
Antworten
hannah
User
Beiträge: 1
Registriert: Freitag 5. November 2004, 08:51

Freitag 5. November 2004, 08:58

Hallo,

bin das erste mal hier und ehrlich gesagt ziemlicher Anfänger wenn es zu Tkinter kommt. Ich hoffe ihr nehmt mir daher meine Frage nicht übel :-)

Ich programmiere in Python ein Spiel. Dieses benötigt zwei Sachen:
- Messages
- Dialoge

Die Messages habe ich momentan als Tkinter Canvas mit einem Button gestaltet, der root.destroy ausführt. Ich habe es als Canvas gemacht, da ich verschiedene Hintegrundbilder für die Messages brauche. Nachdem die Message also zu gemacht wurde, wird der Python Code weiter ausgeführt. Das nächste könnte dann z.B. ein SimpleDialog askfloat sein. Das funktioniert auch noch. Der Wert der dort eingegeben wurde wird auch korrekt an das Programm übergeben. Wenn jetzt aber danach wieder ein Canvas mit einer Mitteilung kommt, dann bekomme ich folgenden Fehler:
File "/Users/hannah/PIK/0-DISS/2004:09/04:09:24-germany_game/04_11/printings.py", line 135, in irate
canvas.create_image(100,100,image=img)
File "/System/Library/Frameworks/Python.framework/Versions/2.3/lib/python2.3/lib-tk/Tkinter.py", line 2060, in create_image
return self._create('image', args, kw)
File "/System/Library/Frameworks/Python.framework/Versions/2.3/lib/python2.3/lib-tk/Tkinter.py", line 2049, in _create
return getint(self.tk.call(
_tkinter.TclError: image "pyimage4" doesn't exist


D.h. er nörgelt an dem Hintergrund Bild rum, aber dies ist eben eins, das vorher in einer Message schon funktioniert hat. Nehme ich das Bild ganz heraus, dann funktioniert der Canvas mit der Message, aber wenn ich den Button mit root.destroy betätige, dann macht das Programm nicht weiter.

Organisiert ist die Sache über drei Dateien. Eine mit dem Programm, das die anderen beiden importiert. Dann gibt es eine Datei mit den Canvas Messages und eine mit den Dialogen.

Ich hoffe ich hab mich nicht allzu wirr ausgedrückt. Freue mich über noch so winzige Hinweise! :-)


Ach ja: ich arbeite auf einem Mac. Wenn ich die EasyDialogs vom Mac benutze, dann funktioniert die ganze Geschichte. Aber das schränkt das ganze ja nochmehr auf Macuser ein. Deshalb wollte ich Tkinter verwenden, sodass jeder der Python und Tkinter hat dieses Programm benutzen kann.
Antworten