From 4e9375eee5cfeb34b4375795e60b5b5ff2a67554 Mon Sep 17 00:00:00 2001 From: "xw_y_am@rmbp" Date: Tue, 24 Apr 2018 17:56:15 +0800 Subject: [PATCH] fix thread stop --- sites.py | 8 ++++++++ ux.py | 12 ++++++++---- 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/sites.py b/sites.py index bac0b7b..5fb9960 100644 --- a/sites.py +++ b/sites.py @@ -9,15 +9,23 @@ class Sites: def __del__(self): print(self.name, 'stop !') + + def stop(self): + self.to_stop = True def search(self, key_word): + self.to_stop = False key_word = self.trns_key(key_word) for url in self.gen_url(key_word): + if self.to_stop: + return try: soup = self.fetch_soup(url) except: break for item in self.get_item(soup): + if self.to_stop: + return if 'link_url' in item: try: item['link'] = self.get_link(self.fetch_soup(item['link_url'])) diff --git a/ux.py b/ux.py index 41317c3..159dac7 100644 --- a/ux.py +++ b/ux.py @@ -29,8 +29,9 @@ class Ux(QMainWindow, window.Ui_MainWindow): self.state.showMessage('Over') if self.timer.isActive(): self.timer.stop() - while self.th_search.isRunning(): - self.th_search.exit() + if self.th_search.isRunning(): + self.th_search.stop() + self.th_search.wait() def on_cb_source_currentIndexChanged(self, index): if type(index) == type(1): @@ -83,6 +84,9 @@ class SearchThread(QThread): def run(self): if not self.key: return - search = self.site(self.to_append_result) - search.search(self.key) + self.search = self.site(self.to_append_result) + self.search.search(self.key) self.to_stop_search.emit() + + def stop(self): + self.search.stop() \ No newline at end of file