使用 lambda 和 QTimer.singleShot 调用函数时出现问题
Problem calling fucntion with lambda along with QTimer.singleShot
我试图在 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 的异步元素(例如信号和计时器)使用事件循环来执行,在您的情况下有 none,因此它失败了。解决方案是创建一个 Q{Core, Gui, }Application:
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_()
我试图在 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 的异步元素(例如信号和计时器)使用事件循环来执行,在您的情况下有 none,因此它失败了。解决方案是创建一个 Q{Core, Gui, }Application:
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_()