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 :

RuntimeError avec Tkinter


Sujet :

Tkinter Python

  1. #1
    Membre éprouvé

    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 116
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 116
    Par défaut RuntimeError avec Tkinter
    Bonjour, en exécutant mon programme, j'ai l'erreur suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RuntimeError: main thread is not in main loop
    , j'ai eu un début d'information ici :
    http://mail.python.org/pipermail/tki...ry/000313.html

    mais je n'ai pas compris comment corriger vraiment mon problème.

    Voilà à quoi cela ressemble schématiquement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    class Application(Tkinter.Tk):
        #Methode __init__, qui initialise l'application
        def __init__(self):
            Tkinter.Tk.__init__(self)
            self.mes_widgets=Init_mes_widgets(self)
            self.mon_thread=Init_mon_thread(self)
            self.mon_thread.start()
     
    if __name__ == '__main__':
        application = Application()
        application.mainloop()
    ,
    application.mon_thread est un thread séparé, qui est géré par l'application et qui opère des rafraichissements sur des Labels, ou des textvariable.

    Donc, en effet, ce n'est pas bon de faire s'occuper deux threads séparés de la même interface graphique, comme j'ai pu le voir sur le lien donné plus haut. Mais je ne sais pas comment remplacer mon thread, avec ses opérations périodiques et ses attentes avec sleep() dans mon application. J'ai l'impression que je suis obligé d'utiliser un thread. Je ne comprends pas le programme d'exemple lié au lien ci-dessus. Comment dois-je faire alors pour corriger cela ? Pouvez-vous m'aider à me passer de ce thread ?

  2. #2
    Membre éprouvé

    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 116
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 116
    Par défaut précisions...
    J'ai trouvé cette information sur le net (c'est en anglais)
    http://aspn.activestate.com/ASPN/Coo...n/Recipe/82965

    Mais, je vois que je devrais en fait réécrire l'application avec une file d'attente, cela serait mieux.

    Mais quelque chose me trouble : j'ai inséré un mon_thread.setDaemon(1) avant de lancer le thread, et je n'ai plus cette erreur d'exécution. Est-ce normal ? Devrais-je me contenter de cela ? Je crois que je ne vais pas le faire néanmoins, je vais vraiment la réécrire. Merci de vos conseils.

Discussions similaires

  1. Canvas avec Tkinter
    Par darksh3ll dans le forum Tkinter
    Réponses: 1
    Dernier message: 03/08/2007, 15h42
  2. Réponses: 2
    Dernier message: 27/05/2007, 02h38
  3. IDLE plante avec Tkinter
    Par von_magnus dans le forum EDI/RAD
    Réponses: 2
    Dernier message: 06/07/2006, 07h20
  4. [Tkinter] Plusieurs fenêtre avec Tkinter
    Par cyrpaut dans le forum Tkinter
    Réponses: 2
    Dernier message: 04/01/2006, 22h24
  5. [Tkinter] Un petit souçis d'event avec Tkinter
    Par fire.stone dans le forum Tkinter
    Réponses: 4
    Dernier message: 29/10/2005, 20h56

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