17.12.2012 Views

Programmation PYTHON - Zenk - Security - Repository

Programmation PYTHON - Zenk - Security - Repository

Programmation PYTHON - Zenk - Security - Repository

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

368<br />

La bibliothèque standard<br />

TROISIÈME PARTIE<br />

Discussion<br />

def _percent(self, msg):<br />

""" appelée par le thread """<br />

self._tk.wm_title(msg)<br />

def search(self):<br />

"""Lance une recherche."""<br />

self.stop_search()<br />

self.frm_result.results_window.delete(0, END)<br />

path = self.frm_path.path.get()<br />

text = self.frm_text.text.get()<br />

# lance le thread de recherche<br />

self.searcher = SearchThread(path, text, self._percent,<br />

self._callback)<br />

self.searcher.start()<br />

def stop_search(self):<br />

"""Stoppe une éventuelle recherche en cours."""<br />

if self.searcher is not None:<br />

self.searcher.stop()<br />

def close(self):<br />

"""Demande de fermeture, arrêt d'une éventuelle recherche."""<br />

self.stop_search()<br />

self._tk.destroy()<br />

if __name__ == '__main__':<br />

app = Application()<br />

app.mainloop()<br />

Le code est séparé en deux parties distinctes, à savoir :<br />

Une classe de thread appelée SearchThread, en charge de la recherche sur le disque,<br />

qui pourrait être utilisée dans un autre contexte.<br />

La couche supérieure qui gère l’interaction avec l’utilisateur, et pilote une instance<br />

du thread de recherche.<br />

Le thread renvoie les résultats pour affichage au fur et à mesure qu’il les trouve. Il n’y<br />

a pas de précaution nécessaire dans notre cas, car seul le thread en cours de recherche<br />

manipule la méthode d’affichage.<br />

Extension<br />

Lorsqu’une application graphique a un besoin récurrent de traitements asynchrones,<br />

il peut être intéressant de mettre en place un pattern producteur-consommateur

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!