J'ai une application wxPython (http://www.OpenSTV.org) qui compte les votes en utilisant des méthodes qui ont plusieurs tours. Je voudrais faire deux choses:wxpython - discussions et événements de fenêtre
(1) Pour un grand nombre de bulletins de vote, cela peut être un peu lent, donc je voudrais montrer à l'utilisateur un dialogue de progression afin qu'il ne pense pas que l'application est gelé. (2) Je voudrais autoriser l'utilisateur à rompre les liens manuellement, et cela nécessite que le code de comptage affiche une fenêtre de dialogue.
Pour réaliser (1), je crée un thread pour exécuter le code de comptage, ce qui me permet de présenter une belle boîte de dialogue de progression à l'utilisateur. Le problème avec ceci, cependant, est que le code de comptage n'est pas le thread principal, et seul le thread principal dans wxPython peut traiter des événements de fenêtre.
Je suppose que je pourrais créer un thread pour exécuter la boîte de dialogue de progression à la place, mais cela semble étrange. Existe-t-il une meilleure façon d'accomplir à la fois (1) et (2)?
Je vois comment cela va me permettre d'exécuter le dialogue de départage dans le thread principal, mais est-ce que l'un ou l'autre permettra au thread principal de communiquer de nouveau avec le thread de comptage? Le thread de comptage doit savoir comment l'utilisateur a rompu l'égalité avant de pouvoir continuer. J'ai peut-être besoin d'une file d'attente pour ça. –
Jeff - À droite, ils communiquent simplement avec le fil principal. – tom10
Quelle que soit la fonction invoquée par wx.CallAfter(), il est également possible d'appeler une méthode ou de modifier directement un attribut dans l'objet thread. – RufusVS