Bonjour, je suis assez pressé, je dois rendre mon projet Vendredi mais j'ai un problème au niveau des fonctions.. Mon programme d'ISN est de réalisé un menu sous Tkinter en gros. Je suis censé simulé l'arrivé d'une trame et afficher une image en fonction de celà.
Mon programme seul marche trés bien :
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 from tkinter import * from tkinter.messagebox import * # boîte de dialogue #________________________ FONCTION ____________________________ def Verification(): print(Motdepasse.get()) #Mouchard TRAME=Motdepasse.get() #Definition de variable pour utiliser [0] liste. if TRAME[0] == '@': #Si le caractere 0 ... showinfo('Résultat','STX vérifié\n') else: showinfo("Resultat","STX invalide, veuillez recommencer\n") Motdepasse.set('') #Nettoye les caracteres precedemment tapés. if TRAME[8]=="+": #Si le caractere 8... showinfo("Resultat","EOT vérifié") else: showinfo("Resultat","EOT invalide, veuillez recommencer\n") Motdepasse.set('') #Nettoye les caracteres precedemment tapés. if TRAME[6]=="7": #Si le caractere 6... showinfo("Resultat","CSC MSB vérifié\n") if TRAME[7]=="0": #Si le caractere 7.. showinfo("Resultat","CSC LSB vérifié\n") else: showinfo("Resultat","Pertubations dues à d'autres emissions\n") Motdepasse.set('') #Nettoye les caracteres precedemment tapés. if TRAME =="@0000070+": #@0000070+ signifie que la boite aux lettres est vide. fenetretrame.destroy() #Fermeture de la fenetre de saisie. import BOITEVIDE #Importation du programme BOITEVIDE.py if TRAME =="@1100070+": #@1100070+ signifie que la boite aux lettres a un colis et une lettre au moins. fenetretrame.destroy() #fermeture de la fenetre de saisie. import LETTRECOLIS #Importation du programme LETTRECOLIS.py if TRAME =="@1000070+": #@1000070+ signifie que la boite aux lettres à une lettre fenetretrame.destroy() #fermeture de la fenetre de saisie. import LETTRE #Importation du programme LETTRE.py if TRAME =="@0100070+": #@0100070+ signifie que la boite aux lettres à un colis. fenetretrame.destroy() #fermeture de la fenetre de saisie. import COLIS #Importation du programme COLIS.py #_________________________________ FENETRE PRINCIPALE __________________ # Création de la fenêtre principale fenetretrame = Tk() fenetretrame.title('Trame reçue') #Titre de la fenetre # Création d'un widget Label (texte 'Mot de passe') Label1 = Label(fenetretrame, text = 'Trame reçue ') Label1.pack(side = LEFT, padx = 5, pady = 5) # Création d'un widget Entry (champ de saisie) Motdepasse= StringVar() Champ = Entry(fenetretrame, textvariable= Motdepasse, bg ='bisque', fg='maroon') Champ.focus_set() Champ.pack(side = LEFT, padx = 5, pady = 5) # Création d'un widget Button (bouton Valider) Bouton = Button(fenetretrame, text ='Valider', command = Verification) #L'appuie sur le bouton active la fonction "verification" Bouton.pack(side = LEFT, padx = 5, pady = 5) fenetretrame.mainloop()
néanmoins des que je fais appel de ce programme depuis un autre programme, tout ce que je peux ecrire dans mon champ de saisie n'est pas reconnu, comme si j'ecrivais rien. Même à l'aide d'un mouchard ( PRINT ) rien ne s'affiche.
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 def TRAME(): import TRAMEMDP def RAPPEL(): # Création de la fenêtre principale fenetrerappel = Tk() fenetrerappel.title('Rappel') fenetrerappel['bg']='bisque' # couleur de fond Button(fenetrerappel,text="Consulter l'etat de la Boite aux lettres",command=TRAME).pack(padx=10,pady=10) # création d'un widget Frame dans la fenêtre principale Rappel1 = Frame(fenetrerappel,borderwidth=2,relief=GROOVE) Rappel1.pack(side=LEFT,padx=10,pady=10) # création d'un second widget Frame dans la fenêtre principale Rappel2 = Frame(fenetrerappel,borderwidth=2,relief=GROOVE) Rappel2.pack(side=LEFT,padx=10,pady=10) # création d'un widget Frame dans un autre widget Frame # le parent du widget Frame1 est le widget fenetrerappel (fenêtre principale) Rappel3 = Frame(Rappel1,bg="white",borderwidth=2,relief=GROOVE) Rappel3.pack(side=LEFT,padx=10,pady=10) # création d'un widget Label et d'un widget Button dans un widget Frame Label(Rappel1,text="Absence de courrier , Mardi 12h").pack(padx=10,pady=10) Button(Rappel1,text="Effacer",fg='navy',command=Rappel1.destroy).pack(padx=10,pady=10) Label(Rappel2,text="Absence de courrier, Mardi 18h").pack(padx=10,pady=10) Button(Rappel2,text="Effacer",fg='navy',command=Rappel2.destroy).pack(padx=10,pady=10) Label(Rappel3,text="Présence de courrier Lundi 18h").pack(padx=10,pady=10) Button(Rappel3,text="Effacer",fg='navy',command=Rappel3.destroy).pack(padx=10,pady=10) fenetrerappel.mainloop()
LE code d'erreur etant le suivant :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 Exception in Tkinter callback Traceback (most recent call last): File "C:\Python34\lib\tkinter\__init__.py", line 1487, in __call__ return self.func(*args) File "E:\ISN FINAL\TRAMEMDP.py", line 11, in Verification if TRAME[0] == '@': #Si le caractere 0 ... IndexError: string index out of range
J'ai vraiment besoin de votre aide![]()
Merci![]()
Partager