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