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 :

[AIDE] incohérence PyScripter et Python


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    agent sncf
    Inscrit en
    Mai 2013
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Activité : agent sncf
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2013
    Messages : 12
    Par défaut [AIDE] incohérence PyScripter et Python
    Bonjour,

    Lors de mon projet je rencontre une chose qui m'est difficilement explicable. Voici mon problème, lorsque je lance mon programme sous PyScripter tout se passe correctement, enfin comme je veux. Par contre lorsque je lance le programme via le fichier .py il ne me fait pas la même chose.

    Dans mon code j'utilise les threads pour avoir des temporisation tout en pouvant continuer d'interagir avec le reste du programme. Mon but étant de faire clignoter une image voir plusieurs.

    Voici des parties de mon code qui n'ont pas l'air de fonctionner correctement.

    Code des temporisations:
    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
    def temporisation():
        global continuer
        while continuer:
     
            def tempo301():
                global ZAP_301
                if ZAP_301 == "ZAP_301_TEMPO":
                    pygame.time.wait(5000)
                    EPA_302 = "ZAP_301_CLI"
     
            t301 = Timer(0.1, tempo301)
            t301.start()
     
     
            def tempo302():
                global EPA_302, ZAP_304, ZAP_306, ZAP_308, ZAP_310
                if EPA_302 == "EPA_302_TEMPO":
                    pygame.time.wait(5000)
                    EPA_302 = "EPA_302_BLANC"
     
                elif ZAP_304 == "ZAP_304_TEMPO":
                    pygame.time.wait(500)
                    ZAP_304 = "ZAP_304_CLI"
     
                elif ZAP_306 == "ZAP_306_TEMPO":
                    pygame.time.wait(500)
                    ZAP_306 = "ZAP_306_CLI"
     
                elif ZAP_308 == "ZAP_308_TEMPO":
                    pygame.time.wait(500)
                    ZAP_308 = "ZAP_308_CLI"
     
                elif ZAP_310 == "ZAP_310_TEMPO":
                    pygame.time.wait(500)
                    ZAP_310 = "ZAP_310_CLI"
     
            t302 = Timer(0.1, tempo302)
            t302.start()
     
    tempo = Timer(0.1, temporisation)
    tempo.start()
     
    def clignotement():
        global etat, continuer
        while continuer:
     
            etat = 0
            pygame.time.wait(500)
            etat = 1
            pygame.time.wait(500)
     
    cligote = Timer(0.1, clignotement)
    cligote.start()
    Code de l'interaction sur les variables:
    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
     
                if It_RP_4T.collidepoint(event.pos):
     
                    if IT_RP_4T == "DE_RP_4T": # si litineraire est detruit on lance les conditions de formations
                        IT_RP_4T = "FO_RP_4T"
     
     
                    elif IT_RP_4T == "CLI_RP_4T": # si litineraire est enregistrer ou defaut de formation on detruit l itineraire
                        IT_RP_4T = "DE_RP_4T"
                        pygame.display.update(fenetre.blit(Bouton_4T_e, (F_4T, O_RP)))
     
                    elif IT_RP_4T == "ET_RP_4T" and EPA_302 == "EPA_302_BLANC" or EPA_302 == "EPA_302_BLANC": # si litineraire est forme et l Epa au blanc on detruit l itineraire
                        IT_RP_4T = "DE_RP_4T"
                        EPA_302 = "EPA_302_BLANC"
                        pygame.display.update(fenetre.blit(Bouton_4T_e, (F_4T, O_RP)))
                        Z314 = "Z314_ETEINT"
                        Z310 = "Z310_ETEINT"
     
                    elif IT_RP_4T == "ET_RP_4T" and EPA_302 == "EPA_302_ROUGE" and FC_302 == True: # si litineraire est forme et l Epa au rouge avec le fc de commande on lance la tempo
                        EPA_302 = "EPA_302_TEMPO"
    Sous PyScripter j'ai bien mes tempos avec les changements de variables, par contre avec le fichiers .py j'arrive à modifier ma premières variable, mais j'ai l'impression que je n'arrive pas à récupérer le changements de variable car mon voyant reste allumé au lieu de clignoter.

    Désolé si le code est lourd mais j'ai appris tous seul et donc je reconnais que mon code ne doit pas être bien propre, et je suis preneur pour l'améliorer et aussi pour respecter les normes de codage.

    Je suis sous windows seven 64bits
    J'ai la version 2.5.3.0 X64 de PyScripter et la version 3.3.1 de Python

    Merci d'avance pour votre aide.

  2. #2
    Expert confirmé
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 486
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4 486
    Billets dans le blog
    6
    Par défaut
    Bonjour,

    Je n'ai pas analysé ton code, mais il m'est déjà arrivé que l'outil de développement interfère sur l'exécution du code qu'il a lancé. Ce qui est demandé à l'OS est tout de même complexe: PyScrypter => interpréteur_Python => ton_code => tes_threads. Ce problème n'est d'ailleurs pas spécifique à PyScrypter, et se retrouve même plus souvent avec IDLE qui est lui-même écrit en Python.

    En fait, la seule chose qui compte, c'est que ton code fonctionne lorsqu'il est lancé à partir de la console. Il te suffit donc d'avoir une console pendant le développement et de l'utiliser exclusivement pour exécuter ton code, en remplacement de l'exécution à partir de PyScrypter.

  3. #3
    Membre averti
    Homme Profil pro
    agent sncf
    Inscrit en
    Mai 2013
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Activité : agent sncf
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2013
    Messages : 12
    Par défaut
    Merci pour ta réponse. Donc il faut qu'a chaque fois que je veux vérifier mon programme le lancer via la console ou le fichier directement.

    Après vu comment j'ai galérer pour parvenir à ce résultat via PyScripter je sens que je redoubler de temps et d'effort pour remédier à mon problème...

    Encore merci

  4. #4
    Expert confirmé
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 486
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4 486
    Billets dans le blog
    6
    Par défaut
    Citation Envoyé par magic_panda Voir le message
    ...
    le lancer via la console ou le fichier directement.
    ...
    Lancer le programme par la console pendant le développement a un gros avantage: on peut y lire les affichages des "print", et aussi les éventuels messages d'erreur! C'est peut-être un outil de debugging limité, mais on aurait tort de s'en priver.

    Pour utiliser la console: on se met dans le répertoire du programme à lancer, et on tape l'instruction d'exécution. Pour les exécutions suivantes, il suffit de faire "flèche en haut" pour retrouver l'instruction d'exécution: c'est très rapide!

    En fait, le seul vrai inconvénient de cette méthode est de ne pas profiter des outils de debugging sophistiqués des outils de développement (genre exécution ligne par ligne, point d'arrêt, etc...).

  5. #5
    Membre averti
    Homme Profil pro
    agent sncf
    Inscrit en
    Mai 2013
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Activité : agent sncf
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2013
    Messages : 12
    Par défaut
    Merci pour ces précisions.

  6. #6
    Membre Expert
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    941
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2007
    Messages : 941
    Par défaut
    un petit détail lié à pyscripter: il propose différent "moteurs" pour exécuter Python: internal, external, external (Tk) et external (wx). J'ai pas creusé les différences, mais ça vaut peut-être la peine d'essayer avec un autre moteur, si tu arrives à reproduire le même comportement que dans la console. Ca permettrait de conserver le debugger graphique...

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

Discussions similaires

  1. Aide pour créer grille Python Shell
    Par nedjed dans le forum Programmation multimédia/Jeux
    Réponses: 14
    Dernier message: 15/04/2011, 14h23
  2. Besoin aide pour bot en python.
    Par -Xoom- dans le forum Programmation multimédia/Jeux
    Réponses: 0
    Dernier message: 04/04/2010, 16h04
  3. aide pour un débutant python
    Par daniel130 dans le forum Général Python
    Réponses: 12
    Dernier message: 12/12/2009, 17h44
  4. Réponses: 9
    Dernier message: 22/10/2009, 01h30

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