Bonjour, Je réalise un petit programme avec interface graphique faite avec TKinter.
A partir de la fenêtre principale, un click sur un bouton m'ouvre une nouvelle fenêtre dans laquelle je mets des entry qui sont aleur tour relié à une base de donnée MYQSL. Le problème c'est que lorsque je clique sur le boutton OK J'ai le message d'erreur suivant:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
[root@localhost test]# python bd.py
Exception in Tkinter callback
Traceback (most recent call last):
File "/usr/lib64/python2.4/lib-tk/Tkinter.py", line 1345, in __call__
return self.func(*args)
File "bd.py", line 21, in enr
id_clas=ed1.get()
NameError: global name 'ed1' is not defined

Pourtant j'ai bien vérifié le nom des entry et ils sont identiques.
Voici le programme:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
#! /usr/bin/python
#-*- coding:Utf-8-*-
 
from Tkinter import *
import MySQLdb
 
def save():
#connexion reliée a la première fenêtre fen1
id = edt1.get()
nom = edt2.get()
prenom = edt3.get() #'Gets' the data from Entry boxes E1, E2, E3, E4
myquery = "INSERT INTO essai.personne (id, nom, prenom) VALUES (\'"+id+"\',\'"+nom+"\',\'"+prenom+"\')"
db = MySQLdb.connect(host='localhost', user='root', passwd='', db='essai')
curs = db.cursor()
curs.execute(myquery)
curs.close()
db.commit()
 
def enr():
#connexion reliée a la première fenêtre fen2
id_clas=ed1.get()
libelle = ed2.get()
nbre=ed3.get()
myquery = "INSERT INTO essai.classe (id_clas, libelle, nbre) VALUES (\'"+id_clas+"\',\'"+libelle+"\',\'"+nbre+"\')"
db = MySQLdb.connect(host='localhost', user='root', passwd='', db='essai')
curs = db.cursor()
curs.execute(myquery)
curs.close()
db.commit()
 
 
 
def new():
# fonction de creation de fenêtre fen2
fen2=Toplevel()
fen2.grab_set()
fen2.focus_set()
fen2.geometry("300x300")
fen2.resizable(False,False)
fen2.title("classe")
te1=Label(fen2, text='N° de la classe:')
te2=Label(fen2, text='Nom de la classe:')
te3=Label(fen2, text='Nombre d eleve:')
ed1=Entry(fen2, bg ='orange')
ed2=Entry(fen2, bg ='white')
ed3=Entry(fen2, bg ='green')
Btn0=Button(fen2,text='Quitter',command=fen2.destroy)
Btn1=Button(fen2,text='OK', command=enr)
te1.grid(row =0)
te2.grid(row =1)
te3.grid(row =2)
ed1.grid(row =0, column =1)
ed2.grid(row =1, column =1)
ed3.grid(row =2, column =1)
Btn0.grid(row =3, column =1)
Btn1.grid(row =3, column =2)
 
#fenêtre principale
fen1=Tk()
fen1.title("Formulaire de saisie")
tex1=Label(fen1, text='N°:')
tex2=Label(fen1, text='Nom:')
tex3=Label(fen1, text='Prenoms:')
edt1=Entry(fen1, bg ='green')
edt2=Entry(fen1, bg ='green')
edt3=Entry(fen1, bg ='green')
Button0=Button(fen1,text='Quitter',command=fen1.quit)
Button1=Button(fen1,text='OK', command=save)
Button2=Button(fen1,text='classe', command=new) 
tex1.grid(row =0)
tex2.grid(row =1)
tex3.grid(row =2)
edt1.grid(row =0, column =1)
edt2.grid(row =1, column =1)
edt3.grid(row =2, column =1)
Button0.grid(row =3, column =1)
Button1.grid(row =3, column =2)
Button2.grid(row =3, column =3)
 
mainloop ()

où se trouve l'erreur...... Merci