Python/PySide/Qt:找出s中的信号名

2024-09-30 01:32:28 发布

您现在位置:Python中文网/ 问答频道 /正文

在一个小的python2.7项目中使用pysideqt绑定模块,我想找出信号的来源。所以在一个槽里面,我想用一些方法来询问这个槽实际上是被什么信号触发的。在

我发现这给了我一个清晰的实际sender对象的调试标记:

sigItem = "<anonymous>" if not self.sender() else \
          re.search('<(.+) object at .+>', repr(self.sender()), 0).group(1)

但是,到目前为止,我找到的唯一能确定导致这个插槽被调用的实际信号是caller对象中的signals索引:

^{pr2}$

那么我怎样才能找出真正的信号?在


Tags: 模块项目对象方法标记selfif信号
1条回答
网友
1楼 · 发布于 2024-09-30 01:32:28

您可以使用索引来获取QMetaMethod,但仅此而已。显然,Qt不想让你知道更多。在

from PyQt4 import QtCore

senderSignalId = None

class Sender(QtCore.QObject):

    signal1 = QtCore.pyqtSignal()
    signal2 = QtCore.pyqtSignal()

class Receiver(QtCore.QObject):

    @QtCore.pyqtSlot()
    def slot(self):
        global senderSignalId
        senderSignalId = self.senderSignalIndex()

sender = Sender()
receiver = Receiver()
sender.signal1.connect(receiver.slot)
sender.signal2.connect(receiver.slot)

sender.signal1.emit()
print sender.metaObject().method(senderSignalId).signature() // signal1()

sender.signal2.emit()
print sender.metaObject().method(senderSignalId).signature() // signal2()

相关问题 更多 >

    热门问题