Pages : 1
#1 Le 17/05/2015, à 18:52
- PythonRoyal
Tkinter Python (ISN)
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 :
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.
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 :
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
Hors ligne
#2 Le 17/05/2015, à 19:37
- pingouinux
Re : Tkinter Python (ISN)
Bonsoir,
J'obtiens ton message d'erreur quand je valide une chaîne nulle dans la fenêtre. Il semble que la chaîne doive contenir au moins 9 caractères.
Hors ligne
Pages : 1