Hallo Python & Tkinter Anwender
Ich habe eine Frage betreffs globale Objekte.
Um meine Frage zu visualisieren habe ich ein
Test-Skript zusammengestellt. Bei diesem Skript
müssen die Funktionsaufrufe mittels ausdokumen-
tieren einzeln getestet werden um zu sehen was
gemeint ist.
Zurück zur Frage.
Warum ergibt die Funktion1 folgende Fehlermeldung:
local variable 'perle' referenced before assignment
Interessanterweise geht es mit Funktion2 beim Einsatz
der Anweisung global perle ohne diese Fehlermeldung.
Mit der Funktion3 funktioniert es sogar ohne die
die Anweisung global perle.
Warum müssen die Objekte: cv,x1,y1,x2,y2 in den
Funktionen nicht als global deklariert werden?
Sorry für meine evt. dumme Frage. (Nobody ist perfekt!)
Code: Alles auswählen
from Tkinter import *
def Funktion1():
cv.delete(perle)
perle = cv.create_oval(x1,y1,x2,y2,fill='green',outline='black')
def Funktion2():
global perle
cv.delete(perle)
perle = cv.create_oval(x1,y1,x2,y2,fill='green',outline='black')
def Funktion3():
try:
cv.delete(perle)
except:
pass
perle = cv.create_oval(x1,y1,x2,y2,fill='green',outline='black')
if __name__ == '__main__':
root = Tk()
root.title("Globale-29.01.04-22:30")
root['bg'] = 'steelblue3'
#~~ Erzeugt Canvasfläche für die Aufnahme von Canvas-Objekten
cv = Canvas(root,height=430,width=450,bd=2,relief=RAISED,bg='khaki2')
cv.pack()
x1 = 100
y1 = 100
x2 = 200
y2 = 200
perle = cv.create_oval(x1,y1,x2,y2,fill='green',outline='black')
Funktion1()
# Funktion2()
# Funktion3()
root.mainloop()
