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

发布于 2022-09-07 03:28:09 字数 891 浏览 15 评论 0

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()

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

比忠 2022-09-14 03:28:09

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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文