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 :

Python cesse de fonctionner


Sujet :

Python

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Juin 2014
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Juin 2014
    Messages : 6
    Points : 5
    Points
    5
    Par défaut Python cesse de fonctionner
    Bonjours tout le monde, j'espère avoir ouvert ce sujet au bon endroit c'est mon premier sujet sur ce forum. Alors voici mon problème, j'ai fait un petit jeu en python (petit qui commence quand même à faire 1700 lignes quoi ^^) et python cesse de fonctionner de manière apparemment aléatoire puisque que je n'ai pas relevé d'action particulière causant ce bug. Je suis un peu perdu parce que c'est la première fois que j'ai affaire à ce genre de bug d'habitude j'ai au moins le droit à un message d'erreur sur la console. Au passage la version de python que j'utilise est python 2.6. J'ai aussi compilé mon programme en un exécutable mais le problème reste le même c'est l’exécutable du programme qui plante. Voilà donc si vous avez une idée de où ça pourrait venir et de comment le régler ce serait cool Si nécessaire je pourrais aussi vous donner le code source de mon programme. Merci d'avance

  2. #2
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    1 049
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 049
    Points : 1 380
    Points
    1 380
    Par défaut
    Citation Envoyé par coco1825 Voir le message
    Si nécessaire je pourrais aussi vous donner le code source de mon programme. Merci d'avance
    je pense que c'est un minimum

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Juin 2014
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Juin 2014
    Messages : 6
    Points : 5
    Points
    5
    Par défaut
    D'ac mais tu vas avoir de la lecture ^^ Le voici https://drive.google.com/file/d/0B6L...it?usp=sharing

  4. #4
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    1 049
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 049
    Points : 1 380
    Points
    1 380
    Par défaut
    j'ai pas trouvé le code source, que du bytecode.

  5. #5
    Expert éminent

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

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 300
    Points : 6 780
    Points
    6 780
    Par défaut
    Salut,

    Comment fais-tu pour avoir une archive de 51 Mo ? Qui plus est non lisible sous Linux.

    Un script de 2000 lignes ne fait pas 80 Ko et seul le script Python est utile à voir.

  6. #6
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    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 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Citation Envoyé par VinsS Voir le message
    Un script de 2000 lignes ne fait pas 80 Ko et seul le script Python est utile à voir.
    2000 lignes de code qui buggent parce que "hélas" mal construit risque de ne pas être beau à voir

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

  7. #7
    Futur Membre du Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Juin 2014
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Juin 2014
    Messages : 6
    Points : 5
    Points
    5
    Par défaut
    Ah désolé je me suis trompé d'archive je vous ai envoyé celle que j'avais compilé ^^ celle la c'est la bonne (et j'ai enlevé la musique, winsound reconnait pas le mp3 alors elle était en wav) https://drive.google.com/file/d/0B6L...it?usp=sharing

    Wiztricks: désolé pour ça, j'espère qu'il est pas si mal construit que ça mais j'ai fait du mieux que j'ai pu, je débute :/

  8. #8
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    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 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Citation Envoyé par coco1825 Voir le message
    Wiztricks: désolé pour ça, j'espère qu'il est pas si mal construit que ça mais j'ai fait du mieux que j'ai pu, je débute :/
    C'est pour çà que j'ai mis "hélas" car vous n'êtes pas encore assez formé pour construire des machins aussi gros.

    J'ai lu votre code en diagonale.
    Tant que vous ne virez pas les appels à des mises à jour du GUI via des threads, pas la peine de regarder plus loin: il est quasi-certain que vos "plantages aléatoires" viennent de là.

    L'exercice va être de ré-écrire ce bout là:
    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
    class MyTimer:						#creation du timer
        def __init__(self, tempo, target, args= [], kwargs={}):
            self._target = target
            self._args =  args 			 #parametres des fonctions qui utilisent le timer
            self._kwargs = kwargs
            self._tempo = tempo															#Temps entre les repetition des fonctions
     
        def _run(self):
            self._timer = threading.Timer(self._tempo, self._run)
            self._timer.start()
            self._target(*self._args, **self._kwargs)
     
        def start(self):
            self._timer = threading.Timer(self._tempo, self._run)
            self._timer.start()
     
        def stop(self):
            self._timer.cancel()
     
    def initialiser():
    	can.delete(ALL)
     
    def lance_timer():
    	global timehb
    	timehb.start()
    sans threads, i.e. en utilisant les routines de timer intégrées à tkinter.

    Mais il faut s'imprégner un peu de votre code pour le faire sans rien casser.
    (Et pour l'instant, j'ai d'autres sujets "prises de têtes" plus urgents).

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

  9. #9
    Futur Membre du Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Juin 2014
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Juin 2014
    Messages : 6
    Points : 5
    Points
    5
    Par défaut
    Merci, il me reste plus qu'a bosser tout ça alors parce que c'était un morceau de code tout fait que nous à donné le prof pour nous éviter de créer le timer nous même car "trop compliqué pour nous". Si quelqu'un qui a plus de temps pouvait m'aiguiller vers la bonne voie ce serait cool, j'ai pas exactement compris ce que tu m'as dit de faire :/

  10. #10
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par coco1825 Voir le message
    Merci, il me reste plus qu'a bosser tout ça alors parce que c'était un morceau de code tout fait que nous à donné le prof pour nous éviter de créer le timer nous même car "trop compliqué pour nous". Si quelqu'un qui a plus de temps pouvait m'aiguiller vers la bonne voie ce serait cool, j'ai pas exactement compris ce que tu m'as dit de faire :/
    Bonjour,

    Voici un exemple de code générique de tkTimer avec la démo qui va 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
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    #!/usr/bin/env python3
    # -*- coding: utf-8 -*-
     
    import tkinter as TK
     
     
    class tkTimer (TK.Frame):
     
        def __init__ (self, master=None, delay=100, callback=None, *args, **kw):
     
            # superclass inits
            TK.Frame.__init__(self, master)
     
            # member inits
            self.master = master
            self.delay = delay
            self.callback = callback
            self.args = args
            self.kw = kw
            self.tid = 0
            self.started = False
     
        # end def
     
     
        def start (self):
     
            if not self.started:
     
                self.started = True
     
                self.__tick()
     
            # end if
     
        # end def
     
     
        def stop (self):
     
            self.after_cancel(self.tid)
     
            self.tid = 0
     
            self.started = False
     
        # end def
     
     
        def __tick (self):
     
            if callable(self.callback):
     
                self.callback(*self.args, **self.kw)
     
                self.tid = self.after(self.delay, self.__tick)
     
            # end if
     
        # end def
     
    # end class tkTimer
     
     
    # ---------------------------- ZONE DEMO -------------------------------
     
     
    def update_clock ():
     
        _hours = ticks // 3600
     
        _minutes = (ticks // 60) % 60
     
        _seconds = ticks % 60
     
        cvar_clock.set(
            "{HH:02d}:{MM:02d}:{SS:02d}"
            .format(HH=_hours, MM=_minutes, SS=_seconds)
        )
     
    # end def
     
     
    def run_clock ():
     
        global ticks
     
        update_clock()
     
        ticks += 1
     
    # end def
     
     
    def demo ():
     
        global root, timer, ticks, cvar_clock
     
        root = TK.Tk()
     
        root.title("tkTimer demo")
     
        timer = tkTimer(root, delay=1000, callback=run_clock)
     
        ticks = 0
     
        cvar_clock = TK.StringVar()
     
        TK.Label(root, textvariable=cvar_clock, font="sans 36 bold").pack(padx=5, pady=5)
     
        TK.Button(root, text="Start", command=timer.start).pack(side=TK.LEFT, padx=5, pady=5)
     
        TK.Button(root, text="Stop", command=timer.stop).pack(side=TK.LEFT, padx=5, pady=5)
     
        TK.Button(root, text="Quit", command=root.destroy).pack(side=TK.RIGHT, padx=5, pady=5)
     
        update_clock()
     
        root.mainloop()
     
    # end def
     
     
    if __name__ == "__main__":
     
        demo()
     
    # end if
    Bon courage.

    @+.

  11. #11
    Futur Membre du Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Juin 2014
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Juin 2014
    Messages : 6
    Points : 5
    Points
    5
    Par défaut
    Merci beaucoup, il ne me reste plus qu'a comprendre tout ça pour le mettre dans mon code sans tout faire foirer x) je m'y met tout de suite, encore merci bonne soirée à tous

  12. #12
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    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 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Citation Envoyé par coco1825 Voir le message
    Merci beaucoup, il ne me reste plus qu'a comprendre tout ça pour le mettre dans mon code sans tout faire foirer x) je m'y met tout de suite, encore merci bonne soirée à tous
    Essayez de remplacer le code du prof par:
    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
    import Tkinter as tk
     
    class MyTimer:                        #creation du timer
        def __init__(self, tempo, target, args= [], kwargs={}):
            self._target = target
            self._args =  args              #parametres des fonctions qui utilisent le timer
            self._kwargs = kwargs
            self._tempo = tempo                                                            #Temps entre les repetition des fonctions
     
        def _run(self):
            self.start()
            self._target(*self._args, **self._kwargs)
     
        def start(self):
           root = tk._default_root
           self._timer = root.after(int(self._tempo * 100), self._run)
     
        def stop(self):
            root = tk._default_root
            root.after_cancel(self._timer)
    De loin, çà devrait marcher mais je n'ai pas essayé: je n'ai pas un Python2.7 où sont déjà installés les biblio.externes utilisées.
    Si çà m... ne vous fatiguez pas à essayez de comprendre: ralez ici d'abord!

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

  13. #13
    Futur Membre du Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Juin 2014
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Juin 2014
    Messages : 6
    Points : 5
    Points
    5
    Par défaut
    Merci je test ça tout de suite

    EDIT: Après divers tests et diverses parties le jeu fonctionne maintenant très bien. Plus de crash et plus les quelques problèmes graphiques qui survenaient de temps en temps, ton timer marche très bien. Merci beaucoup

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

Discussions similaires

  1. ''explorateur exe a cessé de fonctionner ''
    Par bibiou dans le forum Windows Vista
    Réponses: 6
    Dernier message: 05/07/2008, 15h16
  2. Erreur : le navigateur (IE & FF) "a cessé de fonctionner"
    Par incognito0015 dans le forum Windows Vista
    Réponses: 3
    Dernier message: 24/12/2007, 15h36
  3. Réponses: 1
    Dernier message: 31/08/2007, 13h19
  4. explorateur windows a cessé de fonctionner
    Par jeanmorel dans le forum Windows Vista
    Réponses: 3
    Dernier message: 09/07/2007, 21h02
  5. [D7] Appli qui "a cessé de fonctionner" sous certains Vista
    Par david_chardonnet dans le forum Delphi
    Réponses: 2
    Dernier message: 03/07/2007, 15h59

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