python pyqt5点击GUI上按钮后窗口关闭,但是后台继续执行脚本命名

需求:
1.在GUI窗体上选择文件,
2.点击取消按钮或点击GUI窗体顶部的X,GUI窗口关闭,退出整个程序
3.点击确定按钮,GUI窗口关闭,后台继续解析选择的文件等一系列操作

目前问题:
点击确定后,GUI窗体没有立即关闭,而是等后面所有脚本执行完才关闭的窗口,请问大家谁知道这是怎么回事,帮忙指点下。

GUI:

img

import sys
import time
from PyQt5.QtWidgets import *
from PyQt5 import QtWidgets
from functools import partial

def data_analysis_mock(file):
    print(f"GUI窗口关闭了,我在命令行执行数据分析:{file}。。。。。。")
    time.sleep(8)

class MyWindow(QWidget):
    def __init__(self):
        super().__init__()
        self.resize(500,500)
        self.setWindowTitle('测试')

        #显示文件路径LineEdit
        self.filepathlabel1 = QtWidgets.QLineEdit(self)
        self.filepathlabel1.resize(300, 30)
        self.filepathlabel1.setReadOnly(True)
        self.filepathlabel1.move(60, 60)
        """选择按钮"""
        selectfileBtn1 = QtWidgets.QPushButton(self)
        selectfileBtn1.setText("选择文件")
        selectfileBtn1.resize(120, 30)
        selectfileBtn1.move(370,60 )
        selectfileBtn1.clicked.connect(partial(self.file,self.filepathlabel1))
        """取消按钮"""
        cancelBtn = QtWidgets.QPushButton(self)
        cancelBtn.setText("取消")
        cancelBtn.resize(100, 50)
        cancelBtn.move(60, 200)
        cancelBtn.clicked.connect(self.click_cancle)
        """确认按钮"""
        confirmBtn = QtWidgets.QPushButton(self)
        confirmBtn.setText("确认")
        confirmBtn.resize(100, 50)
        confirmBtn.move(200, 200)
        confirmBtn.clicked.connect(self.click_confirmBtn)

    #浏览文件dialog
    def file(self,pathlabel):
        filename = QFileDialog.getOpenFileNames(self, '选择test_result文件', "/", "XML Files(*.xml)")
        if len(filename[0])>0:
            pathlabel.setText(filename[0][0])

    def click_cancle(self):
        app = QApplication.instance()
        print("您选择了退出程序")
        # 退出应用程序
        app.quit()

    #点击确认按钮的槽函数
    def click_confirmBtn(self):
        app = QApplication.instance()
        # 退出应用程序
        app.quit()
        print("退出GUI,继续执行数据分析脚本。。。。")
        data_analysis_mock(self.filepathlabel1.text())

if __name__ == '__main__':
    app = QApplication(sys.argv)
    w = MyWindow()
    w.show()
    sys.exit(app.exec_())

关不掉是因为你在quit(0后面又在调用弹窗相关功能导致冲突,当你把quit()后面的函数去掉就可以关掉,这儿直接用close()关


import sys
import time
from PyQt5.QtWidgets import *
from PyQt5 import QtWidgets
from functools import partial


def data_analysis_mock(file):
    print(f"GUI窗口关闭了,我在命令行执行数据分析:{file}。。。。。。")
    time.sleep(8)


class MyWindow(QWidget):
    def __init__(self):
        super().__init__()
        self.resize(500, 500)
        self.setWindowTitle('测试')

        # 显示文件路径LineEdit
        self.filepathlabel1 = QtWidgets.QLineEdit(self)
        self.filepathlabel1.resize(300, 30)
        self.filepathlabel1.setReadOnly(True)
        self.filepathlabel1.move(60, 60)
        """选择按钮"""
        selectfileBtn1 = QtWidgets.QPushButton(self)
        selectfileBtn1.setText("选择文件")
        selectfileBtn1.resize(120, 30)
        selectfileBtn1.move(370, 60)
        selectfileBtn1.clicked.connect(partial(self.file, self.filepathlabel1))
        """取消按钮"""
        cancelBtn = QtWidgets.QPushButton(self)
        cancelBtn.setText("取消")
        cancelBtn.resize(100, 50)
        cancelBtn.move(60, 200)
        cancelBtn.clicked.connect(self.click_cancle)
        """确认按钮"""
        confirmBtn = QtWidgets.QPushButton(self)
        confirmBtn.setText("确认")
        confirmBtn.resize(100, 50)
        confirmBtn.move(200, 200)
        confirmBtn.clicked.connect(self.click_confirmBtn)

    # 浏览文件dialog
    def file(self, pathlabel):
        filename = QFileDialog.getOpenFileNames(self, '选择test_result文件', "/", "XML Files(*.xml)")
        if len(filename[0]) > 0:
            pathlabel.setText(filename[0][0])

    def click_cancle(self):
        print("您选择了退出程序")
        # 退出应用程序
        self.close() #继承自qt5内置函数close,关闭窗口

    # 点击确认按钮的槽函数
    def click_confirmBtn(self):
        # 退出应用程序
        self.close()
        print("退出GUI,继续执行数据分析脚本。。。。")
        data_analysis_mock(self.filepathlabel1.text())


if __name__ == '__main__':
    app = QApplication(sys.argv)
    w = MyWindow()
    w.show()
    sys.exit(app.exec_())