PyQt6程序中PDFWorker类的run函数何时被调用?
PyQt6程序中PDFWorker类的run函数何时被调用?
嗨,我来帮你搞清楚这个疑惑~
你之所以看到run()函数被执行,是因为PyQt6里的QThread类有一套特定的工作机制,具体原因如下:
QThread的核心规则:当你继承
QThread并实现了run()方法后,不需要手动调用run()。你只需要调用QThread提供的start()方法,框架就会自动在新创建的后台线程中执行run()函数里的代码。这是Qt线程模块的设计规范,目的是让线程启动和执行逻辑分离,保证线程安全。你的代码中的触发点:看你贴的
window2类的start()方法,最后一行写了:self.pdf_worker.start()这行代码就是关键!当你点击界面上的
pushButton_start按钮时,会触发start()方法,在这个方法里你创建了PDFWorker的实例self.pdf_worker,接着连接了进度和完成的信号,最后调用start()方法。这时候QThread就会自动去调用PDFWorker里的run()函数,所以你才会看到print("run4")的输出。
简单来说,start()是启动线程的开关,而run()是线程真正干活的入口,这个入口是Qt框架帮你调用的,不用你手动写run()调用代码~
备注:内容来源于stack exchange,提问作者james
相关产品推荐
相关产品推荐

