PyQt5:使用槽/信号时 self 是 NoneType

问题描述 投票:0回答:1

我在尝试在自定义类上使用槽/信号时遇到一些问题。

班级看起来像这样:

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 适用于我的应用程序中的所有插槽/信号。但我不知道为什么这个特定的失败了。

对可能发生的事情有什么想法吗?

python pyqt pyqt5 attributeerror signals-slots
1个回答
1
投票

引发错误是因为发送信号时

self
None
。也就是说,信号所连接的
Screenshot
实例已被删除(或正在删除中)。

© www.soinside.com 2019 - 2024. All rights reserved.