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 :

Tkinter & threads


Sujet :

Tkinter Python

Mode arborescent

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 5
    Par défaut Tkinter & threads
    Bonjour,

    En TP nous a été demandé de programmer un Pong.

    J'ai fait une première version basique qui marche (presque) bien, il faut juste que je mette le changement d'angle en fonction de la zone où la balle touche la palette. Ca doit pas être difficile (modulo, angle...), je préfère me consacrer à quelque chose qui me semble plus intéressant : la gestion des threads.

    En effet, dans cette première version (pong.py), il est impossible aux joueurs de descendre en même temps.

    J'ai donc cherché comment effectuer la gestion des threads (sachant qu'on n'a pas encore abordé la poo avec python). J'ai trouvé pas mal de sites intéressants.


    Dans la deuxième version (pongtest.py), j'ai ajouté le module thread, j'ai créé les 4 threads, j'ai modifié le binding des touches A, Q, <Up> et <Down> quand on appuie/relache.

    Quand on appuie sur Q, on appelle la fonction Descend2 avec comme argument l'évènement ("appui sur la touche Q") qui lance le thread correspondant. Si la touche est relachée ("<Releasekey-Q>"), on appelle une fonction similaire qui est censée stopper le thread : nomduthread._Thread__stop()

    Le problème, c'est que j'ai l'impression que les threads ne sont pas du tout du tout stoppé, je me chope une erreur : "RuntimeError: threads can only be started once"

    J'ai pensé à, au lieu de stopper un thread quand on relache une touche, mettre en pause son exécution jusqu'à l'appui de la même. Mais puisque je ne comprends rien aux certains definitions des threads (avec des __init__ je-sais-plus-trop-quoi) je n'ai pas pu trouver quelque chose permettant de mettre la pause.

    Vous trouverez mes codes ci-joints.


    J'aurai donc deux questions :
    ___Existe-t-il un moyen de gérer plusieurs évènements "en même temps" avec tkinter ? J'ai sûrement zappé quelque chose avant d'aller me lancer dans les threads...
    ___Sinon, comment stopper un thread FACILEMENT ? :o

    Merci !

    Bonne journée

    PS : J'ai aussi un petit problème, j'ai essayé de faire une pop-up d'info avec tkMessageBox.showinfo("You lost", "You lost"), j'ai "NameError: global name 'tkMessageBox' is not defined"....
    Fichiers attachés Fichiers attachés

Discussions similaires

  1. Thread et rafraichissement Tkinter
    Par panda31 dans le forum Tkinter
    Réponses: 8
    Dernier message: 25/05/2009, 08h48
  2. Gestion d'une IHM Tkinter par un thread
    Par Julien38 dans le forum Tkinter
    Réponses: 1
    Dernier message: 23/05/2009, 22h44
  3. thread et tkinter
    Par Dbutant dans le forum Tkinter
    Réponses: 1
    Dernier message: 11/04/2009, 15h38
  4. python, tkinter et les sockets (et les threads)
    Par bomberwaterman dans le forum Réseau/Web
    Réponses: 6
    Dernier message: 02/01/2009, 19h53
  5. [Tkinter] Thread pas logique!
    Par airod dans le forum Tkinter
    Réponses: 4
    Dernier message: 26/11/2006, 22h36

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