IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Tkinter Python Discussion :

Débutant Tkinter (ISN)


Sujet :

Tkinter Python

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2015
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2015
    Messages : 9
    Points : 4
    Points
    4
    Par défaut Débutant Tkinter (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 :
    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

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 292
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 292
    Points : 36 788
    Points
    36 788
    Par défaut
    Salut,

    Si la variable Tk motdepasse est vide, normal que:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
      File "E:\ISN FINAL\TRAMEMDP.py", line 11, in Verification
        if TRAME[0] == '@': #Si le caractere 0 ...
    IndexError: string index out of range
    Pour le reste, quand je vois:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
       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
    Je suis désolé mais vous ne fernez pas une fenêtre mais l'application Tk ce qui peut être "problématique".
    De plus, "import" n'importe pas un programme mais un "module" qui doit définir des fonctions que votre programme principal s'appliquera à appeler.

    - W

  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2015
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2015
    Messages : 9
    Points : 4
    Points
    4
    Par défaut
    Merci de votre réponse rapide, néanmoins , vous pouvez essayer le programme, vous verrez que celui-ci demande à l'utilisateur de rentrer des caracteres, en l'occurence une trame, mais que les caracteres tapés ne sont pas reconnus, je suppose que c'est à cause de la superposition de fonctions mais je n'arrive pas à resoudre ce probleme.

    Import peut aussi importer un programmer, je l'ai d'ailleurs déjà utilisé dans un programme, et il me semble même que sur ce site il y a un tutoriel à propos de ça, et peut être que c'est vrai pour la fenetre, je vais tester mais cela ne gene pas le bon fonctionnement du programme lorsqu'on le lance seul.

  4. #4
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 292
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 292
    Points : 36 788
    Points
    36 788
    Par défaut
    Salut,
    Si vous essayez:
    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
    # -*- coding:utf-8 -*-
    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()
    notez tout ce que j'ai mis en commentaires... çà ne fonctionne pas si mal.
    Et qu'est ce que j'ai enlevé?

    - W

  5. #5
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2015
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2015
    Messages : 9
    Points : 4
    Points
    4
    Par défaut
    JE vous avoue que j'ai du mal à vous suivre..
    Ce programme marche trés bien seul, comme dans ma premiere balise code, néanmoins c'est quand je fais appel à lui dans un autre programme que le dysfonctionnement surgit.

  6. #6
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 292
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 292
    Points : 36 788
    Points
    36 788
    Par défaut
    Citation Envoyé par PythonRoyal Voir le message
    JE vous avoue que j'ai du mal à vous suivre..
    Ce programme marche trés bien seul, comme dans ma premiere balise code, néanmoins c'est quand je fais appel à lui dans un autre programme que le dysfonctionnement surgit.
    Vous y faîtes sans doute appel via un "import"... Et çà ne marche pas?
    Mais comme c'est pas comme çà qu'on utilise import (sauf quand on sait ce qu'on fait)...

    - W

  7. #7
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2015
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2015
    Messages : 9
    Points : 4
    Points
    4
    Par défaut
    L'import marche, je n'ai pas voulu vous vexer avec moi, mais je l'ai utilisé tout au long de mon projet, j'ai déjà essayer d'être le code et de le mettre dans une fonction pour voir, c'est juste que le programme se lance, mais je suppose que comme on fait appel a une fonction d'une sous fonction cela bug.
    il me semble qu'il faut mettre un CLASS ou quelque chose du genre quand on superpose des fonctions, le probleme ne vient pas du Import j'en suis sur et certains

  8. #8
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 292
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 292
    Points : 36 788
    Points
    36 788
    Par défaut
    Citation Envoyé par PythonRoyal Voir le message
    L'import marche, je n'ai pas voulu vous vexer avec moi, mais je l'ai utilisé tout au long de mon projet, j'ai déjà essayer d'être le code et de le mettre dans une fonction pour voir, c'est juste que le programme se lance, mais je suppose que comme on fait appel a une fonction d'une sous fonction cela bug.
    il me semble qu'il faut mettre un CLASS ou quelque chose du genre quand on superpose des fonctions, le probleme ne vient pas du Import j'en suis sur et certains
    Si votre code ne fonctionne pas c'est que vous ne l'avez pas correctement programmé.
    Et ce qui ne fonctionne pas, c'est apparemment l'enchainement de vos traitements.
    Si vous les avez réalisé avec "import", moi, j'arrête de regarder.

    Bon courage.

    - W

Discussions similaires

  1. Scrollbar sur la Fenetre principale (Tkinter) ISN
    Par Displayed dans le forum Général Python
    Réponses: 1
    Dernier message: 09/09/2014, 13h22
  2. Débutant sur tkinter
    Par adise dans le forum Tkinter
    Réponses: 3
    Dernier message: 18/12/2010, 09h09
  3. Fetchall et Tkinter / débutant
    Par Mic92 dans le forum Général Python
    Réponses: 0
    Dernier message: 28/07/2010, 16h12
  4. [Débutant] Blocages sur module Tkinter
    Par larchicha dans le forum Tkinter
    Réponses: 8
    Dernier message: 22/03/2010, 20h49
  5. Réponses: 19
    Dernier message: 27/01/2010, 11h50

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo