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

GUI Python Discussion :

exécution d'un code à partir de la fenêtre python sous arcmap 10.1


Sujet :

GUI Python

  1. #1
    Membre régulier
    Femme Profil pro
    étudiant master
    Inscrit en
    Février 2014
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Algérie

    Informations professionnelles :
    Activité : étudiant master

    Informations forums :
    Inscription : Février 2014
    Messages : 164
    Points : 100
    Points
    100
    Par défaut exécution d'un code à partir de la fenêtre python sous arcmap 10.1
    bonjour,

    j'ai exécuté un petit programme python, ça fonctionne bien.
    le problème c'est quand je l’exécute à partir de la fenêtre python sous arcgis 10.1, il ne marche pas et exactement les élément de la liste ne s'affichent pas lorsque je clic sur le bouton afficher.

    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
    import Tkinter,Tix,ttk
    from Tkinter import *
    from Tix import *
    from ttk import *
     
    fen=Tix.Tk()
    listCH=('Blé Dur','Blé Tendre','Orge','Avoine','Tritical')
    listCE=('Maîs','Sorgho')
     
     
    listbox=Listbox(fen)
    listbox.grid(row=3,column=0,padx=5,sticky=NW)
    def var3(evt):
        print varcombo3.get()
     
    varcombo3 = Tix.StringVar()
    combo3 = Tix.ComboBox(fen, editable=1, dropdown=1,variable=varcombo3, command = var3)
    combo3.entry.config(state='readonly')  ## met la zone de texte en lecture seule
    combo3.insert(1, 'Céréales d\'hiver')
    combo3.insert(2, 'Céréales d\'été')
    combo3.grid(row=1,column=1,columnspan=3,padx=5,sticky=NW)
     
    def exe():
        if  varcombo3.get()=='Céréales d\'hiver':
                listbox.insert(1,listCH[0])
                listbox.insert(2,listCH[1])
                listbox.insert(3,listCH[2])
                listbox.insert(4,listCH[3])
                listbox.insert(5,listCH[4])
        elif varcombo3.get()=='Céréales d\'été':
                listbox.insert(1,listCE[0])
                listbox.insert(2,listCE[1])
     
    afficher=Button(fen,text='Afficher', command=exe)
    afficher.grid(row=3,column=2,sticky=N+W)
     
    fen.mainloop()
    avez vous une solution?

    merci

  2. #2
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par noramokh Voir le message
    bonjour,

    j'ai exécuté un petit programme python, ça fonctionne bien.
    le problème c'est quand je l’exécute à partir de la fenêtre python sous arcgis 10.1, il ne marche pas et exactement les élément de la liste ne s'affichent pas lorsque je clic sur le bouton afficher.

    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
    import Tkinter,Tix,ttk
    from Tkinter import *
    from Tix import *
    from ttk import *
     
    fen=Tix.Tk()
    listCH=('Blé Dur','Blé Tendre','Orge','Avoine','Tritical')
    listCE=('Maîs','Sorgho')
     
     
    listbox=Listbox(fen)
    listbox.grid(row=3,column=0,padx=5,sticky=NW)
    def var3(evt):
        print varcombo3.get()
     
    varcombo3 = Tix.StringVar()
    combo3 = Tix.ComboBox(fen, editable=1, dropdown=1,variable=varcombo3, command = var3)
    combo3.entry.config(state='readonly')  ## met la zone de texte en lecture seule
    combo3.insert(1, 'Céréales d\'hiver')
    combo3.insert(2, 'Céréales d\'été')
    combo3.grid(row=1,column=1,columnspan=3,padx=5,sticky=NW)
     
    def exe():
        if  varcombo3.get()=='Céréales d\'hiver':
                listbox.insert(1,listCH[0])
                listbox.insert(2,listCH[1])
                listbox.insert(3,listCH[2])
                listbox.insert(4,listCH[3])
                listbox.insert(5,listCH[4])
        elif varcombo3.get()=='Céréales d\'été':
                listbox.insert(1,listCE[0])
                listbox.insert(2,listCE[1])
     
    afficher=Button(fen,text='Afficher', command=exe)
    afficher.grid(row=3,column=2,sticky=N+W)
     
    fen.mainloop()
    avez vous une solution?

    merci
    Bonjour,

    Avez-vous un message d'erreur avec arcGIS ?

    @+.

  3. #3
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 241
    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 241
    Points : 36 698
    Points
    36 698
    Par défaut
    Salut,
    Citation Envoyé par noramokh Voir le message
    le problème c'est quand je l’exécute à partir de la fenêtre python sous arcgis 10.1, il ne marche pas et exactement les élément de la liste ne s'affichent pas lorsque je clic sur le bouton afficher.
    Si ca ne fonctionne pas c'est que les comparaisons effectuées dans "exe":
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    def exe():
        if  varcombo3.get()=='Céréales d\'hiver':
                listbox.insert(1,listCH[0])
                listbox.insert(2,listCH[1])
                listbox.insert(3,listCH[2])
                listbox.insert(4,listCH[3])
                listbox.insert(5,listCH[4])
        elif varcombo3.get()=='Céréales d\'été':
                listbox.insert(1,listCE[0])
                listbox.insert(2,listCE[1])
    retournent toujours faux.

    Et comme vous travaillez encore sous Python2, Python ne travaille pas encore "Unicode partout" ce qui n'aide pas dans les échanges de chaînes de caractères avec le GUI. Plutôt que de laisser Python se débrouiller comme il peut, soyez plus directif: préfixez vos littéraux par u" (et assurez vous que tout est converti en Unicode avant de vous en servir ou utilisez Python3).

    Pour ce bout de code, çà donne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    def exe():
        if  varcombo3.get()==u"Céréales d'hiver":
            ...
        elif varcombo3.get()==u"Céréales d'été":
            ...
    Mais la médecine est à appliquer aux autres littéraux.

    - W
    PS: Dans votre code, il n'y a rien qui se rapporte à arcmap/arcgis. Pas la peine d'en parler.
    Par contre, décrire ce qu'il se passe, simplifier les manip. à faire pour obtenir ce que vous constatez... éviterait qu'on perde son temps en conjectures.
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  4. #4
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par wiztricks Voir le message
    Salut,


    Si ca ne fonctionne pas c'est que les comparaisons effectuées dans "exe":
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    def exe():
        if  varcombo3.get()=='Céréales d\'hiver':
                listbox.insert(1,listCH[0])
                listbox.insert(2,listCH[1])
                listbox.insert(3,listCH[2])
                listbox.insert(4,listCH[3])
                listbox.insert(5,listCH[4])
        elif varcombo3.get()=='Céréales d\'été':
                listbox.insert(1,listCE[0])
                listbox.insert(2,listCE[1])
    retournent toujours faux.

    Et comme vous travaillez encore sous Python2, Python ne travaille pas encore Unicode partout ce qui n'aide pas dans les échanges de chaînes de caractères avec le GUI. Plutôt que de laisser Python se débrouiller comme il peut, soyez plus directif: préfixez vos littéraux par u" (et assurez vous que tout est converti en Unicode avant de vous en servir ou utilisez Python3).

    Pour ce bout de code, çà donne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    def exe():
        if  varcombo3.get()==u"Céréales d'hiver":
            ...
        elif varcombo3.get()==u"Céréales d'été":
            ...
    Mais la médecine est à appliquer aux autres littéraux.

    - W
    PS: Dans votre code, il n'y a rien qui se rapporte à arcmap/arcgis. Pas la peine d'en parler.
    Par contre, décrire ce qu'il se passe, simplifier les manip. à faire pour obtenir ce que vous constatez... éviterait qu'on perde son temps en conjectures.
    @noramokh:

    Effectivement, je viens de tester votre code, comme le dit wiztricks, c'est un problème Unicode.

    En revanche, si vous avez la flemme de tout reprendre dans votre script, vous pouvez aussi mettre ceci en début de fichier :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
     
    from __future__ import unicode_literals
     
    import Tkinter,Tix,ttk
    from Tkinter import *
    from Tix import *
    from ttk import *
    ça marche très bien sans devoir remodifier toutes vos chaînes de caractères.

    @wiztricks :

    @+.

  5. #5
    Membre régulier
    Femme Profil pro
    étudiant master
    Inscrit en
    Février 2014
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Algérie

    Informations professionnelles :
    Activité : étudiant master

    Informations forums :
    Inscription : Février 2014
    Messages : 164
    Points : 100
    Points
    100
    Par défaut
    Citation Envoyé par tarball69 Voir le message
    Bonjour,

    Avez-vous un message d'erreur avec arcGIS ?

    @+.
    non, il n'y a aucune erreur avec arcgis

  6. #6
    Membre régulier
    Femme Profil pro
    étudiant master
    Inscrit en
    Février 2014
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Algérie

    Informations professionnelles :
    Activité : étudiant master

    Informations forums :
    Inscription : Février 2014
    Messages : 164
    Points : 100
    Points
    100
    Par défaut
    c'est exactement comme vous avez présenté.

    à W: ce code est lié à un autre qui utilise les outils arcpy. (je sais bien que vous allez poser cette question)

    à W et à tarball69 :

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

Discussions similaires

  1. [Toutes versions] Liste modifiable - Exécuter le code à partir d'un autre contrôle
    Par forges dans le forum VBA Access
    Réponses: 2
    Dernier message: 26/08/2011, 11h20
  2. Déclencher l'exécution d'un code à partir d'un bouton Swing
    Par zouari.fatma dans le forum Débuter
    Réponses: 2
    Dernier message: 29/03/2011, 14h46
  3. exécuter un code à partir d'un lien
    Par heeedi dans le forum Langage
    Réponses: 2
    Dernier message: 12/03/2010, 11h28
  4. Réponses: 4
    Dernier message: 04/05/2009, 17h33
  5. Exécution d'un script à partir de code java
    Par ridecat dans le forum Langage
    Réponses: 4
    Dernier message: 02/11/2008, 20h09

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