2010-05-20 14 views
1

Je suis novice en python et j'essaie d'utiliser pyinotify avec une interface graphique utilisant pygtk. J'ai deux classes, ma classe gtk qui ne fait pas grand-chose, n'affiche que des choses, et une classe qui gère le monitoring. Quand je les exécute séparément, ils font leur travail mais quand j'essaie de charger la classe gtk de l'autre, il ne fait qu'exécuter la classe gtk, la classe monitor ne s'exécute que lorsque je quitte l'interface graphique. Si je commente la dernière ligne le moniteur fonctionne bien. Je pense que le "myGTK.main" bloque tout le processus. Y a-t'il quelque chose que je puisse faire?Pyinotify ne fonctionne pas avec pygtk

pyinotify.ProcessEvent.__init__(self) 
self.notifier = pyinotify.ThreadedNotifier(self.watch_manager, self)  
self.watch_manager.add_watch('/test', pyinotify.IN_CREATE, rec=True) 
self.notifier.start() 
self.myGTK.main() 

Merci.

+0

Avez-vous consulté http://faq.pygtk.org/index.py?file=faq20.006.htp&req=show? Comment la structure de votre code se compare-t-elle à l'exemple de code affiché ici? Utilisez-vous 'gobject.threads_init()' et votre pygtk a-t-il été compilé avec le drapeau --enable-threads? – unutbu

+0

Great link unutbu, je viens de mettre "gobject.threads_init()" comme dit la FAQ et tout a bien fonctionné. Merci. – juniorbl

+0

Super! content que ça a marché pour toi. – unutbu

Répondre

4

par les commentaires, la solution semble être d'ajouter

gobject.threads_init() 

près du haut du script. Ceci, et d'autres informations utiles sur l'utilisation de threads avec pygtk peuvent être trouvés dans this faq.