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/