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

GTK+ avec Python Discussion :

Fenetre inactive glade


Sujet :

GTK+ avec Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 24
    Par défaut Fenetre inactive glade
    Bonjour a tous,

    J'ai un petit problème avec mon projet glade.
    Après avoir rempli différents champs (entry, fileChooser, etc) je lance dans un thread le traitement de ses données. Il s'agit d'injecter des trames sur une interface.

    Seulement je voudrais pouvoir arrêter l'envoi des trames, mon problème étant que tant que les trames n'ont pas finies d'être envoyées, tous les composants de ma fenêtre sont inactifs, je ne peux donc cliquer sur rien.
    Or je voudrais pouvoir cliquer sur un bouton pour stopper le thread. Quelle est l'option/solution pour palier à mon problème?

    Je ne suis pas sur que mettre du code soit vraiment utile, mais s'il y en a vraiment besoin je peux le faire.

    Merci d'avance

    Edit: j'ai un doute sur le bon positionnement de mon sujet, mais je l'ai mis dans al partie pygtk car je ne sais pas si c'est un problème avec la librairie ou avec le logiciel Glade.

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 24
    Par défaut
    Bon j'ai compris mon erreur. En fait je lançais un thread avec la méthode start(), qui permet de lancer le thread en arrière plan et ensuite le second avec run(). Du coup le second thread reste au premier plan et ma fenêtre est grisée.

    Malheureusement j'ai encore un problème : c'est que quand je lance les deux threads avec start() ils ne se lancent pas.
    Du moins quand je surveille mon interface réseau avec wireshark, aucune trame ne passe.

    Au final, le sujet peut être déplacé dans la partie python, vu que ça ne concerne plus le pygtk mais le python, désolé pour le boulot les modos

  3. #3
    Membre chevronné
    Inscrit en
    Janvier 2007
    Messages
    329
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 329
    Par défaut
    Salut,

    Tu as raison de poster dans la partie Pygtk, car la gestion des threads avec interface graphique est un peu différente.

    Je te conseille de lire ce sujet :
    http://www.developpez.net/forums/d90...-thread-pygtk/
    et la FAQ pygtk :
    http://faq.pygtk.org/index.py?req=sh...=faq20.006.htp
    pour voir les petites subtilités.

    En espérant que ça puisse t'aider

    -

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 24
    Par défaut
    Merci je me suis inspiré des deux (surtout de la FAQ, le sujet je l'avait déjà parcouru)

    Mais j'ai toujours un problème : c'est que j'ai l'impression que redéfinir la méthode run() m'oblige à mettre le traitement que doit effectuer mon thread dedans, or cela ne m'intéresse pas du tout.
    Serait-il possible de définir mon thread comme un thread "normal" (la partie en gras!):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    t=myThread.MyThread(target=maFonction, kwargs= monDict)
    t.start()
    Sachant que maFonction est définie dans un autre module, je n'ai pas réussi a ce que le thread l'exécute correctement.Y a t-il une solution à mon problème?
    J'ai essayé de transformer maFonction en une classe callable mais d'une part pour passer les arguments c'est assez bidouillage, et de plus le thread bloque quand je "call" la classe...

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 24
    Par défaut
    Bon j'ai réussi a régler mon problème.Par contre, avec la méthode du booléen, le traitement dans le thread ne s'arrête pas.

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 24
    Par défaut
    Bon problème finalement totalement résolu, j'avais un problème de boucle. Ca ne vous avance pas a grand chose de le savoir, mais au moins je peux mettre le tag résolu au sujet

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

Discussions similaires

  1. Glade, plusieurs fenetres dans un projet
    Par Gamall dans le forum GTK+ avec C & C++
    Réponses: 1
    Dernier message: 21/12/2009, 18h59
  2. [glade] Afficher plusieur fois la même fenetre
    Par zenetcalme dans le forum GTK+
    Réponses: 4
    Dernier message: 21/11/2008, 17h30
  3. Fenetres inactives & Screenshots
    Par kazoumoulox dans le forum C#
    Réponses: 7
    Dernier message: 09/10/2008, 16h42
  4. Fenetre inactive durant l'execution de l'application
    Par renitou dans le forum Windows Forms
    Réponses: 4
    Dernier message: 21/03/2008, 18h05
  5. [javahelp] Fenetre inactive
    Par delma dans le forum API standards et tierces
    Réponses: 3
    Dernier message: 23/10/2006, 23h11

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