为什么 QTimer 在对象中不起作用? python PyQt

Why QTimer doesn't work in a object? python PyQt

我是 python 和 pyqt 的新手。我刚刚发现 QTimer 需要 eventloop 运行 工作。

为什么这行不通?

import PyQt5.QtCore
import sys


app = PyQt5.QtCore.QCoreApplication(sys.argv)

class Foo:
    def __init__(self):
        self.timer = PyQt5.QtCore.QTimer()
        self.timer.timeout.connect(lambda: print("foo"))
        self.timer.start(500)

Foo()

app.exec_()

另一方面,这工作正常。

import PyQt5.QtCore
import sys


app = PyQt5.QtCore.QCoreApplication(sys.argv)

timer = PyQt5.QtCore.QTimer()
timer.timeout.connect(lambda: print("foo"))
timer.start(500)

app.exec_()

创建 class foo = Foo()

的实例
Foo -> <class '__main__.Foo'>
foo -> <__main__.Foo object at 0x0000000002AD8A90>

import PyQt5.QtCore
import sys


app = PyQt5.QtCore.QCoreApplication(sys.argv)

class Foo:
    def __init__(self):
        self.timer = PyQt5.QtCore.QTimer()
        self.timer.timeout.connect(lambda: print("foo"))
        self.timer.start(500)

print(f'Foo -> {Foo}')
foo = Foo()
print(f'foo -> {foo}')

app.exec_()