Одним из решений является передача лямбды, что-то вроде:
self.graphicsView.mouseDoubleClickEvent = lambda event : self.MyFunc(self.in_1, self.in_2)
Это работает, но создает проблемы, так как mouseDoubleClickEvent имеет реализацию, которая с предыдущим кодом удаляется.В этом случае лучшее решение - использовать eventFilter, но для просмотра, так как он получает событие мыши.
from PyQt5 import QtCore, QtWidgets
class MainWindow(QtWidgets.QMainWindow):
def __init__(self, parent=None):
super(MainWindow, self).__init__(parent)
self.graphicsView = QtWidgets.QGraphicsView()
self.setCentralWidget(self.graphicsView)
self.graphicsView.viewport().installEventFilter(self)
self.in_1 = 10
self.in_2 = 20
def eventFilter(self, obj, event):
if obj is self.graphicsView.viewport():
if event.type() == QtCore.QEvent.MouseButtonDblClick:
self.func(event)
return super(MainWindow, self).eventFilter(obj, event)
def func(self, event):
print(event.pos(), self.in_1, self.in_2)
if __name__ == '__main__':
import sys
app = QtWidgets.QApplication(sys.argv)
w = MainWindow()
w.show()
sys.exit(app.exec_())