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 :

problèmes de logique ! ne fait pas dans l'ordre.


Sujet :

Tkinter Python

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7
    Points : 6
    Points
    6
    Par défaut problèmes de logique ! ne fait pas dans l'ordre.
    bonjour je suis en train de faire mon premier programme de manière autonome et c'est chaud

    L'objectif : monter un dossier novell à partir d'un identifiant demandé.

    le code : (oui, je n'ai pas tout à fait bien commenté mon code )

    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
    #NovellConnect permet de se connecter a son compte Novell depuis Linux
    from Tkinter import *
    import os
    import commands
    from socket import gethostname
     
     
    def creerdossier(chemin):
        os.mkdir(chemin)
     
    def creerrepertoire(chemin):
        fen2=Tk()
        Label(fen2, text='Voulez-vous vraiment creer ce repertoire ?').pack(side=TOP)
        Button(fen2,text='Oui', command=creerdossier(chemin)).pack(side=LEFT)
        Button(fen2, text='Non', command=fen2.quit).pack(side=RIGHT)
        fen2.mainloop()
        fen2.destroy()
     
    def monterlevolume(even):
        "Verifie la presence du point de montage et monte le repertoire distant"
        chemin='/mnt/novelll/'+  gethostname() + '/' + str(saisie.get())
        if os.path.exists(chemin):
            commande_montage='ncpmount -S 192.XXX -U XXXXXX -A XXXXXXX -P XX' + chemin
            montageok,sortiestandard=commands.getstatusoutput(commande_montage)
            os.chdir(chemin)
            status,output = commands.getstatusoutput('ls -lh')
            resultat.configure(text = 'retour : ' + chemin + str(commande_montage) + str(output))
            os.chdir('/home/jb')
        else :
            resultat.configure(text = str(chemin) + " n'existe pas")
            creerrepertoire(chemin)
     
     
    def demonterlevolume():
        "demonte les volumes reseau lie au poste"
        os.chdir('/mnt/novelll/' + gethostname())
        status,output = commands.getstatusoutput('ncpumount *')
        status2,output2 = commands.getstatusoutput('ls -lh kk')
        resultat.configure(text = 'ls -lh donne : ' + str(output2))
     
    #definition des gloables
    #chemin='/home'
     
    fen=Tk()
     
     
    resultat=Label(fen, text='retour : ')
     
    Label(fen, text='Indiquer votre login Novell et appuyer sur entree').grid(row=0,column=0)
     
    #zone de saisie
    saisie=Entry(fen)
    saisie.bind("<Return>", monterlevolume)
    saisie.grid(row=0,column=1)
    resultat.grid(row=0,column=2, columnspan=2, pady=10, padx=10)
    Button(fen, text='se deconnecter', command=demonterlevolume).grid(row=1,column=1)
    fen.mainloop()
    demonterlevolume()
    fen.destroy()
     
     
    #################
    ce que je souhaite :
    si est entré un répertoire qui n'existe pas encore, il ouvre une fenetre (fen2) qui demande si oui ou non (via 2 boutons) il veut créer le dosser.
    Si oui, il est crée, si non, il quitte.

    ce qu'il fait:
    si est rentré un dossier qui n'existe pas, il lance bien la fenetre, mais le dossier est crée directement. meme sans papuyer sur le bouton.

    J'ai beau me relire, je vois pas.

    Si une bonne ame passe par là

    Djibb.

  2. #2
    Membre averti
    Homme Profil pro
    Responsable du parc et des réseaux de télécommunication
    Inscrit en
    Mai 2003
    Messages
    290
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Responsable du parc et des réseaux de télécommunication
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2003
    Messages : 290
    Points : 388
    Points
    388
    Par défaut
    Bonjour,
    C'est une erreur fréquente :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Button(fen2,text='Oui', command=creerdossier(chemin)).pack(side=LEFT)

  3. #3
    Membre éclairé
    Avatar de airod
    Homme Profil pro
    Gérant Associé, DMP Santé et Directeur technique
    Inscrit en
    Août 2004
    Messages
    767
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Gérant Associé, DMP Santé et Directeur technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 767
    Points : 891
    Points
    891
    Par défaut
    je commente le post ci haut.

    Tu ne peux pas mettre en command, une fonction auquel tu passe un argument.
    C'est a dire :

    Button(root,command=create_dossier) c'est correcte mais pas

    Button(root,command=create_dossier(dossier))

    dans ce cas si tu veux passer des arguments a ta fonction associée au bouton, il faut passer par une fonction lambda

    ex:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Button(root,command=lambda dossier=ma_variable:create_dossier(dossier))
    voilà, si tu as besoin de plus de renseignements sur cette fonction lambda, regarde sur le forum en lancant une petite recherche.

    A+

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 93
    Points : 81
    Points
    81
    Par défaut je sais pas si ca marche mais bon je le propose quand meme
    j ai du modifier quelque chemin windows et non linux

    mais voila le code il cree effectivement un dosier si je repond oui mais je ne sais pas si cela te conviendras regarde mon code ce st le meme que le tiens
    avec quelques modification nj ai mis des ligne de code en commentaire cela gener le bon deroulement du programme mais il faut que tu transforme legerement les chemin n oubli pas d allez dans le repertoire desirez avant d appellez la fonction mkdir(path) si t a des probleme avec ce code di moi ou sa boque
    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
     
    from Tkinter import *
    import os
    import commands
    from socket import gethostname
     
     
     
    def creerdossier(chemin):
        os.chdir('C:''\\''Python25''\\''mnt''\\''novelll')
        os.mkdir(chemin)
     
    def creerrepertoire(*args):
        fen2=Tk()
        lb=Label(fen2, text='Voulez-vous vraiment creer ce repertoire ?')
        lb.pack(side=TOP)
        def test():
            creerdossier(saisie.get())
            fen2.destroy()
        buoui=Button(fen2,text='Oui', command=test)
        buoui.pack(side=LEFT)
        bunon=Button(fen2, text='Non', command=fen2.destroy)
        bunon.pack(side=RIGHT)
        #fen2.mainloop()
        ##fen2.destroy()
     
    def monterlevolume(*args):
        "Verifie la presence du point de montage et monte le repertoire distant"
        chemin='\\mnt\\novelll\\'+  gethostname() + '\\' + str(saisie.get())
        if os.path.exists(chemin):
            commande_montage='ncpmount -S 192.XXX -U XXXXXX -A XXXXXXX -P XX' + chemin
            montageok,sortiestandard=commands.getstatusoutput(commande_montage)
            os.chdir(chemin)
            status,output = commands.getstatusoutput('ls -lh')
            resultat.configure(text = 'retour : ' + chemin + str(commande_montage) + str(output))
            os.chdir('C:\\''Python25')
        else :
            resultat.configure(text = str(chemin) + " n'existe pas")
            creerrepertoire(chemin)
     
     
    def demonterlevolume():
        "demonte les volumes reseau lie au poste"
        os.chdir('\\'+'mnt'+'\\''novelll' + gethostname())
        status,output = commands.getstatusoutput('ncpumount *')
        status2,output2 = commands.getstatusoutput('ls -lh kk')
        resultat.configure(text = 'ls -lh donne : ' + str(output2))
     
    #definition des gloables
    #chemin='/home'
     
    fen=Tk()
     
     
    resultat=Label(fen, text='retour : ')
     
    Label(fen, text='Indiquer votre login Novell et appuyer sur entree').grid(row=0,column=0)
     
    #zone de saisie
    saisie=Entry(fen)
    saisie.bind("<Return>", monterlevolume)
    saisie.grid(row=0,column=1)
    resultat.grid(row=0,column=2, columnspan=2, pady=10, padx=10)
    Button(fen, text='se deconnecter', command=demonterlevolume).grid(row=1,column=1)
    fen.mainloop()
    #demonterlevolume()
    #fen.destroy()
     
     
    #################

Discussions similaires

  1. Imp: l'import ne se fait pas dans le tablespace voulu
    Par clemYokYok dans le forum Import/Export
    Réponses: 1
    Dernier message: 14/01/2012, 14h01
  2. Réponses: 13
    Dernier message: 03/03/2011, 17h13
  3. La saisie ne se fait pas dans les bonnes cellules
    Par NEC14 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 04/08/2010, 09h14
  4. Réponses: 14
    Dernier message: 23/05/2008, 15h10
  5. Problème "conceptuel" de requête SQL (pas dans leurs ecritures)
    Par Julie!!! dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 22/04/2008, 11h25

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