2010-07-09 6 views
1

J'ai une application PyQt4, qui à un moment donné emballe un gros fichier en utilisant le module tarfile. Puisque le module tarfile n'implémente aucune stratégie de rappel, il bloque et l'interface graphique Qt ne répond plus.garder vivant thread dans PyQt4

Je souhaite que l'interface graphique continue à être mise à jour pendant cette période. La seule possibilité est un fil séparé. Donc, je démarre un QThread. Que dois-je faire dans QThread pour que l'interface graphique se mette à jour? Dès que le processus de goudron est terminé, je veux que le fil se termine.

Merci! Nathan

Répondre

1

Les QThread sont à peu près identiques aux threads Python normaux, donc vous pouvez simplement utiliser des méthodes de communication normales. Cependant, QThreads a également quelques signaux disponibles, donc si vous vous connectez simplement à ceux-ci, que vous avez terminé.

Dans votre code GUI faire quelque chose comme cela et vous êtes à peu près fait:

Il y a aussi un terminated et started signal disponible que vous pouvez utiliser :)

+0

Merci, mais ce que je Je me demande quelle est la fonction que je dois appeler le GUI pour mettre à jour. – Nathan

+0

Quel type de mise à jour de GUI recherchez-vous? Vous pouvez simplement connecter n'importe quel emplacement au signal et cela fonctionnera :) – Wolph

+0

Je veux que le GUI soit redessiné (s'il le juge nécessaire) et réagisse à la saisie de l'utilisateur – Nathan