PyQt5使用了QThread分离UI和逻辑,结果UI还是会卡住

class Ux(QMainWindow, window.Ui_MainWindow):
    @pyqtSlot()
    def do_stop_search(self):
        pass

    @pyqtSlot(dict)
    def do_append_result(self, item):
        pass
    
    def on_btn_search_clicked(self):
        self.search = SearchThread(self, text)
        self.search.run()


class SearchThread(QThread):
    to_append_result = pyqtSignal([dict])
    to_stop_search = pyqtSignal()

    def __init__(self, obj, key_word):
        super().__init__()
        self.site = obj.site         # obj.site is a class
        self.key = key_word
        self.to_append_result.connect(obj.do_append_result)
        self.to_stop_search.connect(obj.do_stop_search)

    def run(self):
        search = self.site(self.to_append_result)
        search.search(self.key)     # do a lot of things
        self.to_stop_search.emit()

请问这个实现哪里出了问题?

阅读 5.3k
1 个回答

已解决,self.search.run()用错了。。。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进