Python 来自鼠标事件的信号

Python 来自鼠标事件的信号,python,python-2.7,pyqt,pyqt4,Python,Python 2.7,Pyqt,Pyqt4,我不确定我做错了什么,基本上我想在mouserelease事件发生时发出一个信号(自定义) Class myWidget(QWidget): def mouseReleaseEvent(self,event): if event.button()==Qt.LeftButton: message="LEFT BUTTON HAS BEEN CLICKED" QtCore.QObject.emit(self,QtCore.SIGNAL('message(

我不确定我做错了什么,基本上我想在mouserelease事件发生时发出一个信号(自定义)

Class myWidget(QWidget):

  def mouseReleaseEvent(self,event):
    if event.button()==Qt.LeftButton:
        message="LEFT BUTTON HAS BEEN CLICKED"
        QtCore.QObject.emit(self,QtCore.SIGNAL('message(QString)') str(message))
当我这样做时,什么也没发生,我看不到信号被发出,我决定离开

    message="LEFT BUTTON HAS BEEN CLICKED"
    QtCore.QObject.emit(self,QtCore.SIGNAL('message(QString)') str(message))
进入油漆事件,这样我就可以确定是否有什么东西被烧掉了。令我惊讶的是,在paintevent中,我可以看到事件被触发(因为我能够使用消息)。然而,当我把它放到mouseReleaseEvent甚至MousePresseEvent中时,什么都没有发生

我做错了什么。 注意,我确实尝试过将打印“hello world”行直接放入mouseReleaseEvent,只是为了测试,我可以看到打印语句按预期执行。为什么我没有看到这件事


使用pyqt、python和windows。这很奇怪

不要使用旧式的信号语法,因为它很容易出错,并且很难调试。请使用以下选项:

from PyQt4 import QtCore, QtGui    

class MyWidget(QtGui.QWidget):
    testSignal = QtCore.pyqtSignal(object)

    def __init__(self, parent=None)
        super(MyWidget, self).__init__(parent)
        self.testSignal.connect(self.testSlot)

    def testSlot(self, message):
        print(message)

    def mouseReleaseEvent(self, event):
        self.testSignal.emit('mouse release')
        super(MyWidget, self).mouseReleaseEvent(event)