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

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

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

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

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

----------------------- 以下是精选回复-----------------------

答:没用过 pyqt,但是在用原生 qt,qt 起线程不是 start 吗? 你怎么直接调用 run。。。
答:因为你在 ui 线程里调用的 run 函数,创建的新线程没用
答:楼主你要补一下基础知识,你这直接调用 run 怎么能行呢,跟不用线程还有啥区别,用 start 启动线程
答:strat() 正解,以前我也写过 pyqt,现在感觉真麻烦,还不如写成 web

DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
网站模板库 » PyQt5 使用了 QThread 分离 UI 和逻辑,结果 UI 还是会卡住

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情