PyQt6实例_批量下载pdf工具_主线程停止线程池

目录

前置:

代码:

视频:


前置:

1 本系列将以 “PyQt6实例_批量下载pdf工具”开头,放在 【PyQt6实例】 专栏
2 本系列涉及到的PyQt6知识点:
线程池:QThreadPool,QRunnable;
信号与槽:pyqtSignal,pyqtSlot;
界面:QTextEdit,QLabel,QLineText,QPushButton,QMainWindow,QWidget;
布局:QHBoxLayout,QVBoxLayout;
弹框:QFileDialog,QMessageBox。
3 本系列后续会在B站录制视频,到时会在文末贴出链接。本人还是建议先看博文,不懂的再看视频,这样效率高,节约时间。

代码:

    def stop_btn_clicked(self):
        answer = QMessageBox.question(
            self,
            '确认停止?',
            '确定要停止任务么?',
            QMessageBox.StandardButton.Yes | QMessageBox.StandardButton.No
        )
        if answer == QMessageBox.StandardButton.Yes:
            self.force_stop()
            pass
        else:
            return
        pass
    def force_stop(self):
        for item in self.runner_list:
            item.stop_run()
        pass
    def closeEvent(self, a0):
        answer = QMessageBox.question(
            self,
            '确认退出?',
            '退出将中断操作,确定要退出么?',
            QMessageBox.StandardButton.Yes | QMessageBox.StandardButton.No
        )
        if answer == QMessageBox.StandardButton.Yes:
            if not self.this_time_start_yeah:
                a0.accept()
            else:
                if self.thread_finished_count == self.max_thread_count:
                    a0.accept()
                else:
                    QMessageBox.information(
                        self,
                        '提示',
                        '正在存储必要信息为下次断点续传做准备,需要等几秒后关闭',
                        QMessageBox.StandardButton.Ok
                    )
                    a0.ignore()
                    self.waitting_close = True
                    self.force_stop()
                    pass
            pass
        else:
            a0.ignore()
            pass
        pass

视频:

https://www.bilibili.com/video/BV1AuZPYiEd9/

你可能感兴趣的:(PyQt6实例,PyQt6)