问题描述
使用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)