Python 使用lambda和QTimer.singleShot调用function时出现问题

Python 使用lambda和QTimer.singleShot调用function时出现问题,python,python-3.x,pyqt,pyqt5,qtimer,Python,Python 3.x,Pyqt,Pyqt5,Qtimer,我试图在QTimer.singleShot函数的帮助下调用一个具有延迟时间的函数,但没有产生任何输出 from PyQt5.QtCore import QTimer list1=[1,2,3,4,5] delay = 2500 def calling_func(): if list1: list_item = list1.pop() QTimer.singleShot(delay, lambda: target_func(list_item)) d

我试图在QTimer.singleShot函数的帮助下调用一个具有延迟时间的函数,但没有产生任何输出

from PyQt5.QtCore import QTimer

list1=[1,2,3,4,5]
delay = 2500

def calling_func():
    if list1:
        list_item = list1.pop()
        QTimer.singleShot(delay, lambda: target_func(list_item))


def target_func(list_item):
    print("fid= ",list_item)
    QTimer.singleShot(delay, calling_func)


calling_func()

我希望在target_func中逐个输出list_item值,但该函数未被调用。

Qt的异步元素(如信号和计时器)使用eventloop执行,在您的情况下没有,因此失败。解决方案是创建一个Q{Core,Gui,}应用程序:

from PyQt5.QtCore import QCoreApplication, QTimer

list1=[1,2,3,4,5]
delay = 2500

def calling_func():
    if list1:
        list_item = list1.pop()
        QTimer.singleShot(delay, lambda: target_func(list_item))


def target_func(list_item):
    print("fid= ",list_item)
    QTimer.singleShot(delay, calling_func)

app = QCoreApplication([])
calling_func()
app.exec_()