Folgendes Minimalbeispiel funktioniert einwandfrei:
Code: Alles auswählen
from Tkinter import *
def clicked():
print e1.get()
win=Tk()
e1=Entry(win)
e1.pack()
b_calc=Button(win,text='ok',command=clicked)
b_calc.pack()
win.mainloop()
Code: Alles auswählen
from numpy import * # "
from Tkinter import *
def quicklabels(labels,texts,rows,columns):
'''Erstellt Labels und richtet sie mit grid-Befehl aus.
labels : Array mit Namen fuer Labels
texts : Array mit Texten fuer Labels
rows : Array mit row-Attribut fuer grid-Befehl
columns : Array mit column-Attribut fuer grid Befehl'''
for i in arange(len(labels)):
exec(labels[i]+'=Label(win,text=\''+texts[i]+'\')')
exec(labels[i]+'.grid(row='+str(rows[i])+',column='+str(columns[i])+')')
def quickedits(edits,rows,columns):
'''Erstellt Entries, analog wie quicklabels'''
for i in arange(len(edits)):
exec(edits[i]+'=Entry(win)')
exec(edits[i]+'.grid(row='+str(rows[i])+',column='+str(columns[i])+')')
def clicked():
print e_L.get()
win=Tk()
quicklabels(['l_L','l_N','l_hqe','l_mu','l_sg_x','l_sg_p','l_g_x','l_g_p'],
['L=','N=','hq_eff=','mu=','sq_x=','sg_p=','g_x=','g_p='],[0,1,2,3,0,1,2,3],
[0,0,0,0,2,2,2,2])
quickedits(['e_L','e_N','e_hqe','e_mu','e_sg_x','e_sg_p','e_g_x','e_g_p'],
[0,1,2,3,0,1,2,3],[1,1,1,1,3,3,3,3])
b_calc=Button(win,text='berechnen',command=clicked)
b_calc.grid(row=4,column=3)
win.mainloop()
Exception in Tkinter callback
Traceback (most recent call last):
File "C:\Python25\lib\lib-tk\Tkinter.py", line 1403, in __call__
return self.func(*args)
File "C:\Dokumente und Einstellungen\Administrator\Eigene Dateien\Studium\04\C
ompPhys\³09\test_get_problem.py", line 22, in clicked
print e_L.get()
NameError: global name 'e_L' is not defined
Liegt das daran, dass das Entry-Widget e_L mit exec erstellt wurde?