我在尝试在自定义类上使用槽/信号时遇到一些问题。
班级看起来像这样:
import sys
from PyQt5 import QtCore
from PyQt5.QtGui import QGuiApplication, QPixmap
class Screenshot(QtCore.QObject):
newScreenshotTaken = QtCore.pyqtSignal(QPixmap)
timer = QtCore.QTimer()
captureInterval = 5 * 60
def __init__(self):
super(Screenshot, self).__init__()
def startCapture(self):
self.capture()
def stopCapture(self):
self.timer.stop()
def on_userStartedCapture(self):
self.startCapture()
def on_userStoppedCapture(self):
self.stopCapture()
def capture(self):
print("capture!")
错误发生在 on_userStartedCapture(self):
File "/Volumes/HD2/test/screenshot.py", line 23, in on_userStartedCapture
self.startCapture()
AttributeError: 'NoneType' object has no attribute 'startCapture'
从另一个类调用 Emit:
self.userStartedCapture.emit()
连接是在 main.py 中完成的:
screenshot = Screenshot()
mainWindow = MainWindow()
mainWindow.userStartedCapture.connect(screenshot.on_userStartedCapture)
奇怪的是 self 适用于我的应用程序中的所有插槽/信号。但我不知道为什么这个特定的失败了。
对可能发生的事情有什么想法吗?
引发错误是因为发送信号时
self
是 None
。也就是说,信号所连接的Screenshot
实例已被删除(或正在删除中)。