首页 > 解决方案 > 为什么 QTimer 在对象中不起作用?python PyQt

问题描述

我是 python 和 pyqt 的新手。我刚刚发现 QTimer 需要运行事件循环才能工作。

为什么这不起作用?

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_()

标签: pythonpyqt5qtimer

解决方案


创建类 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_()

推荐阅读