Vive PyGTK FAQ ! Moi ça me résoud presque tout le temps mes problèmes. Ensuite, il suffit de naviguer dans les docs de PyGTK. Le tutoriel est toujours pratique, mais surtout la référence donne accès à tout ce qu'il faut savoir.
L'une d'entres elles consiste à faire croire à l'utilisateur que GTK tourne toujours en le forçant à effectuer les tâches qu'il a en stock... Ça peut être pratique, mais c'est pas du threading. Généralement cette méthode est pratique pour mettre à jour des informations dans les fenêtres GTK quand on est dans un callback un peu (beaucoup) très long.
Sinon, on peut aussi initialiser le système de thread pour qu'il soit plus GTK aware (et inversement). Ça se passe au moment de l'initialisation de GTK. Au lieu d'utiliser seulement gtk.main() pour lancer la loop principale, on lance le mode threads avant et on le quitte après. C'est pas encore tout à fait le top, mais apparemment ça a l'air de marcher dans mes applis...
[^] # Re: tuto pour gtk textwiew
Posté par Julien Portalier . En réponse au message Textview Python/Gtk. Évalué à 3.
FAQ: http://www.async.com.br/faq/pygtk/index.py?req=index(...)
Tutoriel: http://www.pygtk.org/pygtk2tutorial/index.html(...)
Référence: http://www.pygtk.org/pygtk2reference/index.html(...)
Pour le threading, c'est un peu délicat. Il y a plusieurs réponses dans la PyGTK FAQ, suivant les types de situations :
3.7 While my callback is executing, nothing is refreshed in the application windows! ( http://www.async.com.br/faq/pygtk/index.py?req=show&file=faq03.(...) )
20. The GTK Mainloop and Threading
L'une d'entres elles consiste à faire croire à l'utilisateur que GTK tourne toujours en le forçant à effectuer les tâches qu'il a en stock... Ça peut être pratique, mais c'est pas du threading. Généralement cette méthode est pratique pour mettre à jour des informations dans les fenêtres GTK quand on est dans un callback un peu (beaucoup) très long.
Sinon, on peut aussi initialiser le système de thread pour qu'il soit plus GTK aware (et inversement). Ça se passe au moment de l'initialisation de GTK. Au lieu d'utiliser seulement gtk.main() pour lancer la loop principale, on lance le mode threads avant et on le quitte après. C'est pas encore tout à fait le top, mais apparemment ça a l'air de marcher dans mes applis...
gtk.gdk.threads_init()
gtk.gdk.threads_enter()
gtk.main()
gtk.gdk.threads_leave()