2024-06-01 01:37:54 发布
网友
我有一个对象,它应该通过发出一个新值作为参数的信号来表示一个值已经改变。值的类型可以更改,所以我不确定如何编写信号类型。我知道我可以用这种老式信号来解释:
self.emit(SIGNAL("valueChanged(PyQt_PyObject)"), newvalue)
但我该如何用新型信号来写呢?
我知道a previous question与此相关,但没有给出“真正”的答案。
我是个初学者,这是我要回答的第一个问题,如果我误解了这个问题,请道歉。。。
下面的代码发出一个发送自定义Python对象的信号,slot使用这个 类来打印“Hello World”。
import sys from PyQt4.QtCore import pyqtSignal, QObject class NativePythonObject(object): def __init__(self, message): self.message = message def printMessage(self): print(self.message) sys.exit() class SignalEmitter(QObject): theSignal = pyqtSignal(NativePythonObject) def __init__(self, toBeSent, parent=None): super(SignalEmitter, self).__init__(parent) self.toBeSent = toBeSent def emitSignal(self): self.theSignal.emit(toBeSent) class ClassWithSlot(object): def __init__(self, signalEmitter): self.signalEmitter = signalEmitter self.signalEmitter.theSignal.connect(self.theSlot) def theSlot(self, ourNativePythonType): ourNativePythonType.printMessage() if __name__ == "__main__": toBeSent = NativePythonObject("Hello World") signalEmitter = SignalEmitter(toBeSent) classWithSlot = ClassWithSlot(signalEmitter) signalEmitter.emitSignal()
首先,从中发出的对象需要定义为其类的属性的信号:
class SomeClass(QObject): valueChanged = pyqtSignal(object)
注意,信号有一个类型的参数object,它应该允许任何东西通过。然后,您应该能够使用任何数据类型的参数从类内发出信号:
self.valueChanged.emit(anyObject)
我是个初学者,这是我要回答的第一个问题,如果我误解了这个问题,请道歉。。。
下面的代码发出一个发送自定义Python对象的信号,slot使用这个 类来打印“Hello World”。
首先,从中发出的对象需要定义为其类的属性的信号:
注意,信号有一个类型的参数object,它应该允许任何东西通过。然后,您应该能够使用任何数据类型的参数从类内发出信号:
相关问题 更多 >
编程相关推荐