[Python-de] Returnwert

Georg Mischler schorsch at schorsch.com
Mon Aug 13 19:00:41 EDT 2001


Eagle wrote:

> danke erst mal für die Antwort Schorsch,
> habe mal folgendes probiert siehe anhängenden Code.
>
>
> from Tkinter import *
>
> root = Tk()
>
> def callback(event):
>      print "clicked at", event.x, event.y
>      global a
>      a=event.x+event.y
>      print a  # diese Zeile funktioniert !
>
> frame = Frame(root, width=100, height=100)
> frame.bind("<Button-1>", callback)
> frame.pack()
>
> print a  # diese Zeile nicht ??
>
> root.mainloop()
>
>
> Wo liegt das Problem, deshalb auch die Frage nach dem Returnwert,
> welcher ja beim Funktionsruf mitgegeben werden muß aber bei dem
> Funktionsruf callback unterbleibt (unterbleiben muß).

Da du den Callback nicht selber aufrufst, koenntest du auch
mit einem eventuellen Returnwert nichts anfangen. Tkinter wirft
Returnwerte meistens einfach weg (jedenfalls solltest du fuer
deine Zwecke vorerst mal davon ausgehen).

Dein Code oben funktioniert darum nicht, weil du das globale
a printen willst, vor es existiert. Der Callback, der dieses
erzeugt, wird ja fruehestens innerhalb von root.mainloop()
aufgerufen.

Vermutlich moechtest du zuallererst einmal a z.B. mit [-1, -1]
initialisieren, und dann deine Koordinaten wieder als Liste oder
Tupel dort hinterlegen. Sonst musst du jedesmal mit einem
AttributeError rechnen, wenn niemand die linke Maustaste
gedrueckt hat.


-schorsch

-- 
Georg Mischler  --  simulations developer  --  schorsch at schorsch.com
+schorsch.com+  --  lighting design tools  --  http://www.schorsch.com/




More information about the Python-de mailing list