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

Python Discussion :

[Python2.6] [entry] [def] Les comparaisons ne fonctionne pas


Sujet :

Python

  1. #1
    Membre averti
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Juillet 2014
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juillet 2014
    Messages : 30
    Par défaut [Python2.6] [entry] [def] Les comparaisons ne fonctionne pas
    Bonjour,

    J'essaye d'appliquer des comparaisons pour la valeur de mon Entry mais peut importe le nombre entrée c'est le elif qui et validé ! Je n'arrive pas à identifier l'erreur. Je fais donc appel à vos connaissances expertes

    Par avance merci


    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
    # -*- coding: cp1252 -*-
    from Tkinter import *
    import os
    import paramiko
    import tkMessageBox
     
    os.chdir("C:/prog")
    fenetre = Tk()
    fenetre.geometry("800x600+300+0")
     
    menu1 = 0
    numero = 0
    numero1 = 0
     
    txt1 = Label(fenetre, text="Telephonie")
    txt1.pack()
    txt2 = Label(fenetre, text="Indiquer le numero de votre nouveau contact:")
    txt2.place(x=45, y=40)
     
    def verification():
        if Motdepasse.get() <= 1:
            # si le numero et inferieur ou egale a 1
            tkMessageBox.showinfo("Erreur", "Le numéro de telephone est invalide")
            print("if",Motdepasse.get())
        elif Motdepasse.get() >= 8:
            print("elif",Motdepasse.get())
        else:
            # sinon le numero est ok on l enregistre sur asterisk
            client = paramiko.SSHClient()
            client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
            client.connect('192.168.1.15', username='root', password='azerty')
            stdin, stdout, stderr = client.exec_command("mkdir test")
            stdin, stdout, stderr = client.exec_command("ls")
            for line in stdout.read().splitlines():
                print (line)
            stdin, stdout, stderr = client.exec_command("rm -r test")
            client.close()
            tkMessageBox.showinfo("Erreur", "Ajout au carnet d adresse effectué pour le numero")
            print("else",Motdepasse.get())
     
     
     
    # Création d'un widget Entry (champ de saisie)
    Motdepasse= StringVar()
    Champ = Entry(fenetre, textvariable= Motdepasse, bg ='bisque', fg='maroon').place(x=45, y=120)
     
     
     
    bouton1=Button(fenetre, text="Ajouter", command=verification).place(x=125, y=115)
     
     
     
     
     
    Resultat = StringVar()
    Label(fenetre,textvariable=Resultat).pack(padx=30,pady=10)
     
     
    fenetre.mainloop()

  2. #2
    Expert confirmé

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 307
    Par défaut
    Salut,

    À mon avis ce serait plutôt len(Motdepasse.get()) <= 1 que tu veux faire.

    Sous Python 3 tu aurais eu une erreur.

  3. #3
    Membre averti
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Juillet 2014
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juillet 2014
    Messages : 30
    Par défaut
    Merci pour t'as réponse. Malheureusement cela ne fonctionne pas correctement non plus.
    Lorsque j'entre une valeur 5 c est le if qui se déclenche ! Avec la valeur 99 c'est le else...
    Après j'ai peut être mal utilisé len car je ne connais pas du tout son fonctionnement.

    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
    # -*- coding: cp1252 -*-
    from Tkinter import *
    import os
    import paramiko
    import tkMessageBox
     
    os.chdir("C:/prog")
    fenetre = Tk()
    fenetre.geometry("800x600+300+0")
     
    menu1 = 0
    numero = 0
    numero1 = 0
     
    txt1 = Label(fenetre, text="Telephonie")
    txt1.pack()
    txt2 = Label(fenetre, text="Indiquer le numero de votre nouveau contact:")
    txt2.place(x=45, y=40)
     
    def verification():
        if len(Motdepasse.get()) <= 1:
            # si le numero et inferieur ou egale a 1
            tkMessageBox.showinfo("Erreur", "Le numéro de telephone est invalide")
            print("if",Motdepasse.get())
        elif len(Motdepasse.get()) >= 8:
            print("elif",Motdepasse.get())
        else:
            # sinon le numero est ok on l enregistre sur asterisk
            client = paramiko.SSHClient()
            client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
            client.connect('192.168.1.15', username='root', password='azerty')
            stdin, stdout, stderr = client.exec_command("mkdir test")
            stdin, stdout, stderr = client.exec_command("ls")
            for line in stdout.read().splitlines():
                print (line)
            stdin, stdout, stderr = client.exec_command("rm -r test")
            client.close()
            tkMessageBox.showinfo("Erreur", "Ajout au carnet d adresse effectué pour le numero")
            print("else",Motdepasse.get())
     
     
     
    # Création d'un widget Entry (champ de saisie)
    Motdepasse= StringVar()
    Champ = Entry(fenetre, textvariable= Motdepasse, bg ='bisque', fg='maroon').place(x=45, y=120)
     
     
     
    bouton1=Button(fenetre, text="Ajouter", command=verification).place(x=125, y=115)
     
     
     
     
     
    Resultat = StringVar()
    Label(fenetre,textvariable=Resultat).pack(padx=30,pady=10)

  4. #4
    Expert confirmé

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 307
    Par défaut
    Et bien, c'est bon alors, que voulais tu d'autre que ce résultat ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    >>> a = '5'
    >>> len(a) <= 1
    True

  5. #5
    Membre averti
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Juillet 2014
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juillet 2014
    Messages : 30
    Par défaut
    J'ai du louper quelque chose alors.

    Es que ce morceau de code veut dire ceci :
    Si Motdepasse.get et inférieur ou égale à 1 alors affichage de print if
    Sinon si Motdepasse.get et supérieure ou égale à 8 alors affichage de print elif
    Sinon (sous entendu si le nombre est compris entre 2 et 7) alors affichage de print else

    Si c est bien cela alors il y a bien un dysfonctionnement. En effet avec la valeur 2 j’obtiens le print if et avec la valeur 99 j’obtiens un print else

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    if len(Motdepasse.get()) <= 1:
            print("if",Motdepasse.get())
        elif len(Motdepasse.get()) >= 8:
            print("elif",Motdepasse.get())
         else:
            print("else",Motdepasse.get())

  6. #6
    Expert confirmé

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 307
    Par défaut
    Analyse mon petit bout de code, en détail.

  7. #7
    Membre averti
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Juillet 2014
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juillet 2014
    Messages : 30
    Par défaut
    Ok donc mon morceau de code du départ était bon sauf qu'il ne fonctionne pas...

    Pour ton morceau de code je n'ai pas compris à quoi sert len et la définition est super claire pour un noob: " La fonction retourne le nombre d'éléments d'une chaîne de caractères ou d'une liste." Si len est la pour fonctionner avec une chaine de caractère ce n'est pas la fonction que je recherche car la variable Motdepasse sera toujours un int.

    Ceci engendre donc 2 questions :

    Pourquoi ne puis je pas utiliser dans une def le if avec des éléments de comparaisons ?

    A quoi sert len ?



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    if Motdepasse.get() <= 1:
            print("if",Motdepasse.get())
        elif Motdepasse.get() >= 8:
            print("elif",Motdepasse.get())
         else:
            print("else",Motdepasse.get())

  8. #8
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 741
    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 741
    Par défaut
    Salut,

    Citation Envoyé par asmodaisda Voir le message
    Si len est la pour fonctionner avec une chaine de caractère ce n'est pas la fonction que je recherche car la variable Motdepasse sera toujours un int.
    Tel que (vous l'avez) défini, Motdepasse est StringVar et .get retournera une chaîne de caractères.

    Citation Envoyé par asmodaisda Voir le message
    Ceci engendre donc 2 questions :
    Avec des prémisses fausses, vous posez de "mauvaises" questions, et c'est normal!

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  9. #9
    Membre averti
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Juillet 2014
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juillet 2014
    Messages : 30
    Par défaut
    Je ne savais pas que StringVar retourne une chaine de caractères D'ou le len...

    Je vais essayer de chercher comment faire la correction par moi même.


    Merci pour votre aide

  10. #10
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 741
    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 741
    Par défaut
    Salut,

    Citation Envoyé par asmodaisda Voir le message
    Je ne savais pas que StringVar retourne une chaine de caractères D'ou le len...
    Vous êtes supposé savoir un minimum avant de vous embarquer à faire des choses avec.
    Imaginez qu'on vous prête une voiture, c'est quand même pas mal de voir comment passer les vitesses, ou sont les commandes pour les essuie-glaces, les feux,... Si vous avez un accident, vous ne pouvez pas dire "je ne savais pas". En programmation, c'est pareil.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  11. #11
    Membre averti
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Juillet 2014
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juillet 2014
    Messages : 30
    Par défaut fini
    J'ai pu apporter une correcte grâce à votre aide merci encore.
    Par contre si j entre un numéro à 11 chiffres celui-ci est reconnu comme un long mais il n'existe pas de Longvar me semble t il ...


    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
     
    # -*- coding: cp1252 -*-
    #chargement du module graphique
    from Tkinter import *
    import Tkinter as tk
    #chargement des commandes de l os
    import os
    #chargement du module ssh
    import paramiko
    #chargement du module de fenetre secondaire
    import tkMessageBox
     
     
    #creation fenetre principal
    fenetre = Tk()
    fenetre.geometry("800x600+300+0")
     
    #placement du text sur l interface
    txt1 = Label(fenetre, text="Telephonie")
    txt1.pack()
    txt2 = Label(fenetre, text="Indiquer le numero de votre nouveau contact puis cliquer sur Ajouter:")
    txt2.place(x=45, y=40)
     
    #commande qui va ajouter le numero lors d un clic sur le bouton Ajouter
    def ajoutnumero():
     
        if le_numero_en_int.get() <= 1 or le_numero_en_int.get() >= 9999999999 :
            # si le numero et inferieur ou egale a 1 OU superieur ou egale a 9999999999
            tkMessageBox.showinfo("Erreur", "Le numéro de telephone est invalide")
            numero = le_numero_en_int.get()
            print("if",numero)
        else:
            # sinon le numero est ok on l enregistre sur asterisk
            numero = le_numero_en_int.get()
            client = paramiko.SSHClient()
            client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
            client.connect('192.168.1.14', username='root', password='azerty')
            stdin, stdout, stderr = client.exec_command("mkdir test")
            stdin, stdout, stderr = client.exec_command("ls")
            for line in stdout.read().splitlines():
                print (line)
            stdin, stdout, stderr = client.exec_command("rm -r test")
            client.close()
            tkMessageBox.showinfo("Erreur", "Ajout au carnet d adresse effectué pour le numero")
            print("else",numero)
            print'/usr/sbin/asterisk -rx "database put test',numero,'maison"'
     
     
     
    # Création d'un widget Entry (champ de saisie)
    le_numero_en_int = tk.IntVar()
    le_numero = Entry(fenetre, bg ='bisque', fg='maroon', textvariable=le_numero_en_int).place(x=45, y=120)
     
    #Bouton qui permet d ajouter le numero saisie dans le widget Entry
    bouton1=Button(fenetre, text="Ajouter", command=ajoutnumero).place(x=125, y=115)

  12. #12
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 741
    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 741
    Par défaut
    Salut,

    Citation Envoyé par asmodaisda Voir le message
    J'ai pu apporter une correcte grâce à votre aide merci encore.
    Par contre si j entre un numéro à 11 chiffres celui-ci est reconnu comme un long mais il n'existe pas de Longvar me semble t il
    Techniquement, vous entrez une chaîne de caractère.
    Et tkinter échange avec TCL/TK (la bibliothèque graphique qui est en dessous) que des chaînes de caractères.
    De fait, la différence entre un IntVar et un StringVar, c'est juste appliquer (ou pas) le constructeur int à la chaîne de caractère récupérée de TCL/Tk avant de la retourner à l'appelant qui a fait ".get".

    L'autre question est de savoir s'il est judicieux de considérer qu'un numéro de téléphone à N chiffres (i.e. à N caractères de type "digit") comme un entier. De fait lorsqu'on écrit 33170123456 on a le pays (33), la région (1) etc... i.e. une chaîne de caractères segmentée suivant une hiérarchie avec des règles définies par un domaine / pays qui pourront être utilisées pour savoir s'il est à peut près valide ou pas. En faire un entier, c'est gommer la hiérarchie pour en faire un truc plat.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  13. #13
    Membre averti
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Juillet 2014
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juillet 2014
    Messages : 30
    Par défaut
    Merci pour votre réponse.

    Si je comprend bien il serai plus judicieux d'utiliser une spinbox ?
    Est il possible dans un spinbox d'autoriser uniquement les valeurs de 10 exemple de 0000000000 à 9999999999 ?

    Par contre il me semble que lors-qu on entre un chiffre manuellement dans une spinbox il ne la prend pas en compte il faut appuyer sur une des deux flèches à droite de la spinbox (qui donc modifie la valeur entrée manuellement) pour que celui-ci soit pris en compte.

  14. #14
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 741
    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 741
    Par défaut
    Citation Envoyé par asmodaisda Voir le message
    Si je comprend bien il serai plus judicieux d'utiliser une spinbox ?
    Est il possible dans un spinbox d'autoriser uniquement les valeurs de 10 exemple de 0000000000 à 9999999999 ?
    Vos utilisateurs vont adorer d'avoir à cliquer 9999999 fois sur la flèche ^ pour choisir un numéro
    Je vous demandais seulement quel intérêt vous aviez à convertir un numéro de téléphone en entier...

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  15. #15
    Membre averti
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Juillet 2014
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juillet 2014
    Messages : 30
    Par défaut
    En faite j'ai voulu en faire un entier pour pouvoir interdire le fait que il n y ai pas 10 caractères pendant la saisis. Et donc j aurai pu utiliser StringVar mais je n'ai pas compris comment faire pour réaliser un if (si le numéro entré ne fait pas 10 caractères message d'erreur).
    Mais finalement avec un IntVar je n ai pas réussi non plus

    En tous les cas merci infiniment pour votre aide. Sans vous j'aurai abandonné la programmation depuis longtemps.

  16. #16
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 741
    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 741
    Par défaut
    Salut,

    Le contrôle des caractères devrait se faire à la saisie.
    Et quelque part, çà c'est le boulot du widget Entry.
    Pas facile de ne pas le faire en 2 temps:
    1. tester que les caractères saisies sont bien des "digits" i.e. dans 0..9
    2. lorsque l'utilisateur dit "j'ai fini" contrôler qu'on a bien 10 caractères.

    Pour la première partie, c'est expliqué ici.
    On peut s'en inspirer pour écrire la deuxième partie mais... çà ne sera pas "simple" (pour vous).

    Pour l'instant, vous faites cela dans "ajouter":
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    def ajoutnumero():
     
        if le_numero_en_int.get() <= 1 or le_numero_en_int.get() >= 9999999999 :
            # si le numero et inferieur ou egale a 1 OU superieur ou egale a 9999999999
            tkMessageBox.showinfo("Erreur", "Le numéro de telephone est invalide")
            numero = le_numero_en_int.get()
            print("if",numero)
    et çà suffira bien...

    Pour s'assurer qu'une chaîne de caractères est de longueur N et qu'elle ne contient que des chiffres, inutile de passer par un entier vous pouvez utilisez la fonction "len" et la méthode "isdigit":
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    >>> s = '123456789'
    >>> len(s)
    9
    >>> s.isdigit()
    True
    >>>
    Ce qui vous permettra de remettre à plus tard la compréhension du widget Entry.
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  17. #17
    Membre averti
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Juillet 2014
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juillet 2014
    Messages : 30
    Par défaut Fini :)
    Suite à vos informations j'ai réussi à utiliser len et isdigit pour faire une vérification de 10 caractères qui soit des chiffres :

    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
     
    # -*- coding: cp1252 -*-
    #chargement du module graphique
    from Tkinter import *
    import Tkinter as tk
    import Tkinter as Tk
    #chargement des commandes de l os
    import os
    #chargement du module ssh
    import paramiko
    #chargement du module de fenetre secondaire
    import tkMessageBox
     
     
    #creation fenetre principal
    fenetre = Tk.Tk()
    fenetre.geometry("800x600+300+0")
     
    #placement du text sur l interface
    txt1 = Label(fenetre, text="Telephonie")
    txt1.pack()
    txt2 = Label(fenetre, text="Indiquer le numero de votre nouveau contact puis cliquer sur Ajouter:")
    txt2.place(x=45, y=40)
     
     
     
     
     
     
     
    #Fonction qui va ajouter le numero lors d un clic sur le bouton Ajouter
    def ajoutnumero():
     
        if len(le_numero_en_int.get()) != 10 or le_numero_en_int.get().isdigit() == False :
            # si le numero ne fait pas 10 caracteres et que ce ne sont pas des chiffres. Generation du message d erreur
            tkMessageBox.showinfo("Erreur", "Le numéro de telephone est invalide : numero de 10 chiffres exigé")
        else:
            numero = le_numero_en_int.get()
            numero = str(numero)
            nom = le_nom_en_int.get()
            number = '/usr/sbin/asterisk -rx "database put test '
            number1 = numero
            number2 = ' '
            number3 = nom
            number4 = '"'
            asterisk_annuaire = number + number1 + number2 + number3 + number4
            print(asterisk_annuaire)
            client = paramiko.SSHClient()
            client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
            client.connect('192.168.1.210', username='root', password='azerty')
            stdin, stdout, stderr = client.exec_command(asterisk_annuaire)
            client.close()
            tkMessageBox.showinfo("Validation", "Ajout au carnet d adresse effectué pour le numero")
     
     
     
     
     
    # Création d'un widget Entry (champ de saisie)
    le_numero_en_int = tk.StringVar()
    le_numero = Entry(fenetre, bg ='bisque', fg='maroon', textvariable=le_numero_en_int).place(x=45, y=120)
     
     
    #Bouton qui permet d ajouter le numero saisie dans le widget Entry
    bouton1=Button(fenetre, text="Ajouter", command=ajoutnumero).place(x=125, y=115)
     
    le_nom_en_int = tk.StringVar()
    le_nom = Entry(fenetre, bg ='bisque', fg='maroon', textvariable=le_nom_en_int).place(x=45, y=150)
    Merci infiniment pour votre aide je n'aurai pas pu finir ce projet sans celle-ci :-D

    PS: je compte faire le même programme en langage C/C++.
    En effet lorsque je valide avec le bouton Ajouter plusieurs seconde s’écoule avant la validation du message (Ajout au carnet d adresse effectué pour le numero).
    Je pense que ceci est dû au module paramiko et au langage python (j'ai lu que python exécuté moins vite les programmes car ce n'est pas un langage compilé).
    Pourriez vous me donner votre avis sur le sujet

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Flash 8]les liens ne fonctionnent pas ?
    Par benedict17 dans le forum Flash
    Réponses: 1
    Dernier message: 28/03/2008, 11h35
  2. Réponses: 3
    Dernier message: 05/02/2008, 10h03
  3. [2008] "Gérer les utilisateurs" ne fonctionne pas
    Par gifffftane dans le forum Mandriva / Mageia
    Réponses: 3
    Dernier message: 06/12/2007, 17h22
  4. les liens ne fonctionnent pas
    Par knopflerized dans le forum Dreamweaver
    Réponses: 3
    Dernier message: 29/10/2007, 18h11
  5. Les EL ne fonctionnent pas !
    Par tequila13 dans le forum Wildfly/JBoss
    Réponses: 4
    Dernier message: 16/06/2007, 21h26

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