来自 MouseReleaseEvent 的信号
Signaling from a MouseReleaseEvent
我不确定我做错了什么,基本上我想在 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,这样我就可以确定是否有任何东西被触发。令我惊讶的是,在 paintevent 中,我可以看到事件被触发(因为我能够使用消息)。但是,当我将它放入 mouseReleaseEvent 甚至 MousePressEvent 时,没有任何反应?
我做错了什么。
请注意,我确实尝试将打印 "hello world" 行直接放入 mouseReleaseEvent 中,只是为了测试,我可以看到打印语句按预期执行。为什么我没有看到 MouseReleaseEvent?
使用 pyqt,python 和 windows。这很奇怪
不要使用old-style 信号语法,因为它很容易出错并且很难调试。使用 new style syntax 代替:
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)
我不确定我做错了什么,基本上我想在 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,这样我就可以确定是否有任何东西被触发。令我惊讶的是,在 paintevent 中,我可以看到事件被触发(因为我能够使用消息)。但是,当我将它放入 mouseReleaseEvent 甚至 MousePressEvent 时,没有任何反应?
我做错了什么。 请注意,我确实尝试将打印 "hello world" 行直接放入 mouseReleaseEvent 中,只是为了测试,我可以看到打印语句按预期执行。为什么我没有看到 MouseReleaseEvent?
使用 pyqt,python 和 windows。这很奇怪
不要使用old-style 信号语法,因为它很容易出错并且很难调试。使用 new style syntax 代替:
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)