结束Qthread运行自定义函数(Python,PyQt4)

2024-05-16 18:17:23 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图在我创建的GUI中实现线程。基本上,我在GUI中有一个按钮,当按下该按钮时,将启动另一个程序的自动化。现在我有一个单独线程启动自动化功能的按钮。但是,我找不到一种方法来中止在自动化函数中间的线程。如果我关闭正在被自动化的程序,自动化函数仍然在一个活动线程的后台运行,并且我不能重新启动另一个新线程的自动化函数。我尝试过将.quit()和.exit()方法映射到主GUI中的一个按钮,但没有成功。有人有什么意见吗?在

这是我的线程类:

class WorkingThread(QtCore.QThread):
    def __init__(self, selector):
        QtCore.QThread.__init__(self)
        self.selector = selector  # Selects function to run

    def __del__(self):
        self.wait()

    def run(self):
        if self.selector == 1:
            asa.mkdirsda(hdg_da_path, da_batch_folder, da_batch_subfolders)
        elif self.selector == 2:
            asa.mvlims(needs_gs_lims_file, subfolder_autoscore, lims_samplesheet)
        elif self.selector == 3:  # Automation function giving me trouble
            asa.gsprocess(subfolder_genomestudio, da_batch_name, lims_samplesheet_file)
        elif self.selector == 4:
            asa.mvfinalreport(subfolder_genomestudio, finalreport_file, subfolder_autoscore)
        elif self.selector == 5:
            asa.pipelineas(userid, userpass, da_batch_name, raw_data_path)
        elif self.selector == 6:
            asa.batchactv()
        return

这就是我如何调用一个新线程:

^{pr2}$

这就是我试图映射到主GUI按钮以结束线程的内容:

def endWorkingThread(self):
        self.thread_gs.quit()

Tags: 函数self程序defbatchgui线程按钮