PyQT5:在继续功能之前等待信号

问题描述

使用PyQt5作为程序的接口,我编写了一个通过单击按钮激活的函数,该函数(除其他外)激活另一个函数,该函数在第一个函数执行其工作时激活在其他对象上工作的线程。 我的问题是,该函数的完成速度比线程快得多,并且我希望程序在继续运行之前等待线程结束,最好使用超时选项。 我知道PyQT5中有信号,并且我知道如何基于给定的信号触发事件,但是,我将如何让程序等待信号出现?

非常感谢您的帮助:)

我想要的示例代码

class MyClass():
    def __init__():
        self.first_function()
        ....
        ....

    def first_function(self):
        ....
        ....
        self.second_function()
        wait_for_signal(timeout=30)

    def second_function(self):
        ....
        t = threading.Thread(target=self.thread_func)
        t.start()
        ....
        ....

    def thread_func(self):
        ....
        ....
        signal.emit()

解决方法

我不确定您到底需要什么,但这是一个函数示例,该函数在开始块信号中并最终激活它们

def show_acte_general(self):
        
        self.comboBox_2.blockSignals(True)
        self.comboBox_2.clear()
        self.comboBox_4.blockSignals(True)
        self.comboBox_4.clear()
        
        self.connection = psycopg2.connect(user="postgres",password="password",host="localhost",database="database")
        self.cur = self.connection.cursor()
        self.cur.execute('''SELECT items FROM read ORDER BY items ASC;''')
        data = self.cur.fetchall()

        for actes in data :
            self.comboBox_2.addItem(actes[0])
            self.comboBox_2.blockSignals(False)
            
            self.comboBox_4.addItem(actes[0])
            self.comboBox_4.blockSignals(False)