带有 QLabel 的 mouseDoubleClickEvent
mouseDoubleClickEvent with QLabel
如何实现 mouseDoubleClickEvent()?
这是代码行:
self.ui.label_3.mouseDoubleClickEvent(自己)
我总是得到错误;
TypeError: 'PySide2.QtWidgets.QWidget.mouseDoubleClickEvent' called with wrong argument types:
PySide2.QtWidgets.QWidget.mouseDoubleClickEvent(MainWindow)
Supported signatures:
PySide2.QtWidgets.QWidget.mouseDoubleClickEvent(PySide2.QtGui.QMouseEvent)
您没有覆盖 mouseDoubleClickEvent 方法,而是错误地调用了它。
一般重写 mouseDoubleClickEvent 方法应该按以下方式完成:
import sys
from PySide2.QtCore import Qt
from PySide2.QtWidgets import QApplication, QLabel
class Label(QLabel):
def mouseDoubleClickEvent(self, event):
super().mouseDoubleClickEvent(event)
print("mouseDoubleClickEvent")
def main():
app = QApplication(sys.argv)
label = Label(text="Qt is awesome!!!", alignment=Qt.AlignCenter)
label.resize(640, 480)
label.show()
sys.exit(app.exec_())
if __name__ == "__main__":
main()
但在您的情况下,这似乎是不可能的,因为您需要从 QLabel 继承并替换它。在这种情况下,最好使用 eventFilter:
self.ui.label_3.installEventFilter(self)
def eventFilter(self, obj, event):
if obj is self.ui.label_3 and event.type() == QEvent.MouseButtonDblClick:
print("MouseButtonDblClick")
return super().eventFilter(obj, event)
如何实现 mouseDoubleClickEvent()?
这是代码行:
self.ui.label_3.mouseDoubleClickEvent(自己)
我总是得到错误;
TypeError: 'PySide2.QtWidgets.QWidget.mouseDoubleClickEvent' called with wrong argument types:
PySide2.QtWidgets.QWidget.mouseDoubleClickEvent(MainWindow)
Supported signatures:
PySide2.QtWidgets.QWidget.mouseDoubleClickEvent(PySide2.QtGui.QMouseEvent)
您没有覆盖 mouseDoubleClickEvent 方法,而是错误地调用了它。
一般重写 mouseDoubleClickEvent 方法应该按以下方式完成:
import sys
from PySide2.QtCore import Qt
from PySide2.QtWidgets import QApplication, QLabel
class Label(QLabel):
def mouseDoubleClickEvent(self, event):
super().mouseDoubleClickEvent(event)
print("mouseDoubleClickEvent")
def main():
app = QApplication(sys.argv)
label = Label(text="Qt is awesome!!!", alignment=Qt.AlignCenter)
label.resize(640, 480)
label.show()
sys.exit(app.exec_())
if __name__ == "__main__":
main()
但在您的情况下,这似乎是不可能的,因为您需要从 QLabel 继承并替换它。在这种情况下,最好使用 eventFilter:
self.ui.label_3.installEventFilter(self)
def eventFilter(self, obj, event):
if obj is self.ui.label_3 and event.type() == QEvent.MouseButtonDblClick:
print("MouseButtonDblClick")
return super().eventFilter(obj, event)