python - 带有 QLabel 的 mouseDoubleClickEvent
问题描述
如何实现 mouseDoubleClickEvent()?
这是代码行:
self.ui.label_3.mouseDoubleClickEvent(self)
我总是得到错误;
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)
推荐阅读
- methods - 按钮上的 Vue 2.0 多键
- java - 使用发布者确认设置默认超时
- tensorflow - Tensorflow saver.save() 无法正常工作
- php - PHP 搜索栏仅显示 1 个结果
- swift - 无法从 Parse 读取电子邮件
- solidity - 为什么方法返回数组而不是数字或字符串?
- php - 在 Codeigniter 上解析和忽略多维数组中的空数据
- minizinc - `constraint forall(i in x)( x[i] <= x[i+1] );` 无法满足的解决方案
- swift - 如何启用 MapKit 楼层?
- jmeter - 我将如何使用 Java 代码从 Jmeter API 使用吞吐量整形计时器?