Python / Tkinter Problem

Hi,

Ich hab da ein kleines Probelm hier ist einach mal der Programmausschnitt und der Fehler:

from tkinter import \*

class App:
 def \_\_init\_\_(self,master):

....

 def ccc(self):

 root3=Tk()

 rahmen3=Frame(bg="white")
 rahmen3.pack()

 root3.geometry("500x200")

 root3.title("Berechnung der Provision")

 e3=Label(root3,text="")
 e3.pack()

 a3=Entry(root3)
 a3.pack()

 b3=Label(root3,text="Hier den Namen
 eingeben",fg="darkblue",font=("ARIAL",10))
 b3.pack()

 f3=Label(root3,text="")
 f3.pack()

 d3=Entry(root3) #=====\> "d3" ist definiert #
 d3.pack()

 c3=Label(root3,text="Hier den Umsatz ohne Euozeichen
 eingeben\nACHTUNG: Ein Komma ist hier ein 
 Punkt\n(z.B.: 1345,1 -\> falsch | 1345.1 -\>
 richtig)",fg="darkblue",font=("ARIAL",10))
 c3.pack()

 g3=Button(root3,text="Verlassen",fg="red",font=
 ("ARIAL",10),command=root3.destroy)
 g3.pack(side="right")

 h3=Button(root3,text="Los!",fg="darkblue",font=
 ("ARIAL",10),command=self.ccc1)
 h3.pack(side="left")

 root3.mainloop()


 #|
 def ccc1(self): |
 |
 A=eval(d3.get()) |
 B=A/100 |===\> Hier liegt irgendwo 
 a31=Label(root3,text=str(B)) | der Fehler glaub ich
 a31.pack() |
 #|



Die Fehlermeldung lautet:

A=eval(d3.get()) #|
NameError: global name 'd3' is not defined |===\> Aber ich hab "d3"
 #| Doch oben schon
 definiert

Nun versteh ich nicht wo der Fehler liegt
Hoffentlich könnt ihr mir weiterhelfen

Danke und Grüße
patgo

Hi,

Ich hab da ein kleines Probelm hier ist einach mal der
Programmausschnitt und der Fehler:

from tkinter import *

class App:

def __init__(self,master):

def ccc(self):

d3=Entry(root3) #=====> „d3“ ist definiert #

def ccc1(self): |

A=eval(d3.get()) |

Die Fehlermeldung lautet:

A=eval(d3.get()) #|

NameError: global name ‚d3‘ is not defined |===> Aber ich

Hallo,

das ist einfach:
so wie es geschrieben ist, ist d3 eine lokale Variable der Methode ccc und bei deren verlassen weggeworfen.
Wenn der Wert erhalten bleiben soll, muss d3 entweder als globale Variable deklariert werden („global d3“ zu Beginn von ccc), oder, was wohl die bessere Lösung ist, als Klassenattribut, d. h. überall muss d3 durch self.d3 ersetzt werden. Dann hat jede App-Instanz ein eigenes Exemplar von d3 und das bleibt so lange erhalten wie die App-Instanz selbst.

Grüße, guidot

Hi guidot.

Vielen Dank für deine Hilfe

Gruß
patgo