Python 如何设置以X实例为参数的pyqtSignal(类X的变量)的类型
我有一个pyqtSignal作为类变量,我希望它的参数是该类的一个实例。创建信号时,如何声明参数的类型Python 如何设置以X实例为参数的pyqtSignal(类X的变量)的类型,python,pyqt,signals,pyqt5,Python,Pyqt,Signals,Pyqt5,我有一个pyqtSignal作为类变量,我希望它的参数是该类的一个实例。创建信号时,如何声明参数的类型 class MyClass(QWidget): my_signal = pyqtSignal(?) (...) def emit_signal(self): self.my_signal.emit(self) 我知道pyqtSignal(object)可以工作,但我想知道在类变量级别是否有一种\uuuuuuu类 另一个问题是:pyqtSignal(
class MyClass(QWidget):
my_signal = pyqtSignal(?)
(...)
def emit_signal(self):
self.my_signal.emit(self)
我知道pyqtSignal(object)
可以工作,但我想知道在类变量级别是否有一种\uuuuuuu类
另一个问题是:
pyqtSignal(MyClass)
、pyqtSignal(QWidget)
(父类)或pyqtSignal(对象)
?演出我问这个问题是因为当我们用@pyqtSlot
装饰器声明时隙参数的类型似乎并不重要。在Python解释器解释my_signal=pyqtSignal(…)
时,它还不知道类名,首先创建类主体,然后将其分配给名为MyClass
的模块变量。因此,唯一的方法是在定义类之后,在尝试访问信号对象之前。这意味着以下两个选项之一可能会起作用(这取决于pyqtSignal和QObject的工作方式,我现在无法尝试):
class MyClass(QObject):
def __init__(self, ...):
...
MyClass.my_signal = pyqtSignal(MyClass)
class MyClass(QObject):
def __init__(self, ...):
if not hasattr(self, 'my_signal'):
MyClass.my_signal = pyqtSignal(MyClass)