Вызов контекстного меню правой кнопкой мыши для нескольких QTableWidget

У меня есть несколько таблиц QTableWidget, для каждой из них я хочу задать контекстное меню, которое будет вызываться по правой кнопки мыши.
В принцие уже нашел частное решение: Вызов контекстного меню по нажатию правой кнопки мыши на ячейку QTableWidget , но это реализация только для одной таблицы.

Чтобы не прописывать одно и то же для всех таблиц, попробовал пробежаться по списку существующих таблиц и создавать меню для всех, но застрял на моменте того, как передать переменную table в метод context():

import sys
from PyQt5 import QtWidgets, QtGui, QtCore
import traceback
from test123 import Ui_Form


class Main(QtWidgets.QWidget):
    def __init__(self):
        super(Main, self).__init__()
        self.ui = Ui_Form()
        self.ui.setupUi(self)
        tables = (self.ui.tableWidget, self.ui.tableWidget_2, self.ui.tableWidget_3, self.ui.tableWidget_4)
        for table in tables:
            table.setContextMenuPolicy(QtCore.Qt.CustomContextMenu)
            table.customContextMenuRequested.connect(self.context(table)) #Как передать переменную table в context


    def context(self, point, table):
        menu = QtWidgets.QMenu()
        if table.itemAt(point):
            edit_question = QtWidgets.QAction('Редактировать вопрос', menu)
            edit_question.triggered.connect(lambda: print("Текст в ячейке: " +
                                                          table.itemAt(point).text()))
            menu.addAction(edit_question)
        else:
            pass
        menu.exec(table.mapToGlobal(point))
if __name__ == "__main__":
    app = QtWidgets.QApplication(sys.argv)
    main = Main()
    main.show()
    sys.exit(app.exec_())

test123.py:

from PyQt5 import QtCore, QtGui, QtWidgets

class Main(QtWidgets.QWidget):
    def __init__(self):
        super().__init__()


class Ui_Form(object):
    def setupUi(self, Form):
        Form.setObjectName("Form")
        Form.resize(494, 417)
        self.verticalLayout_2 = QtWidgets.QVBoxLayout(Form)
        self.verticalLayout_2.setObjectName("verticalLayout_2")
        self.verticalLayout = QtWidgets.QVBoxLayout()
        self.verticalLayout.setObjectName("verticalLayout")
        self.tableWidget = QtWidgets.QTableWidget(Form)
        self.tableWidget.setObjectName("tableWidget")
        self.tableWidget.setColumnCount(4)
        self.tableWidget.setRowCount(2)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget.setVerticalHeaderItem(0, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget.setVerticalHeaderItem(1, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget.setHorizontalHeaderItem(0, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget.setHorizontalHeaderItem(1, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget.setHorizontalHeaderItem(2, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget.setHorizontalHeaderItem(3, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget.setItem(0, 0, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget.setItem(0, 1, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget.setItem(0, 2, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget.setItem(0, 3, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget.setItem(1, 0, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget.setItem(1, 1, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget.setItem(1, 2, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget.setItem(1, 3, item)
        self.verticalLayout.addWidget(self.tableWidget)
        self.tableWidget_4 = QtWidgets.QTableWidget(Form)
        self.tableWidget_4.setObjectName("tableWidget_4")
        self.tableWidget_4.setColumnCount(4)
        self.tableWidget_4.setRowCount(2)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget_4.setVerticalHeaderItem(0, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget_4.setVerticalHeaderItem(1, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget_4.setHorizontalHeaderItem(0, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget_4.setHorizontalHeaderItem(1, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget_4.setHorizontalHeaderItem(2, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget_4.setHorizontalHeaderItem(3, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget_4.setItem(0, 0, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget_4.setItem(0, 1, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget_4.setItem(0, 2, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget_4.setItem(0, 3, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget_4.setItem(1, 0, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget_4.setItem(1, 1, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget_4.setItem(1, 2, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget_4.setItem(1, 3, item)
        self.verticalLayout.addWidget(self.tableWidget_4)
        self.tableWidget_3 = QtWidgets.QTableWidget(Form)
        self.tableWidget_3.setObjectName("tableWidget_3")
        self.tableWidget_3.setColumnCount(4)
        self.tableWidget_3.setRowCount(2)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget_3.setVerticalHeaderItem(0, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget_3.setVerticalHeaderItem(1, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget_3.setHorizontalHeaderItem(0, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget_3.setHorizontalHeaderItem(1, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget_3.setHorizontalHeaderItem(2, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget_3.setHorizontalHeaderItem(3, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget_3.setItem(0, 0, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget_3.setItem(0, 1, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget_3.setItem(0, 2, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget_3.setItem(0, 3, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget_3.setItem(1, 0, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget_3.setItem(1, 1, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget_3.setItem(1, 2, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget_3.setItem(1, 3, item)
        self.verticalLayout.addWidget(self.tableWidget_3)
        self.tableWidget_2 = QtWidgets.QTableWidget(Form)
        self.tableWidget_2.setObjectName("tableWidget_2")
        self.tableWidget_2.setColumnCount(4)
        self.tableWidget_2.setRowCount(2)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget_2.setVerticalHeaderItem(0, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget_2.setVerticalHeaderItem(1, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget_2.setHorizontalHeaderItem(0, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget_2.setHorizontalHeaderItem(1, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget_2.setHorizontalHeaderItem(2, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget_2.setHorizontalHeaderItem(3, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget_2.setItem(0, 0, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget_2.setItem(0, 1, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget_2.setItem(0, 2, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget_2.setItem(0, 3, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget_2.setItem(1, 0, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget_2.setItem(1, 1, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget_2.setItem(1, 2, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget_2.setItem(1, 3, item)
        self.verticalLayout.addWidget(self.tableWidget_2)
        self.verticalLayout_2.addLayout(self.verticalLayout)

        self.retranslateUi(Form)
        QtCore.QMetaObject.connectSlotsByName(Form)

    def retranslateUi(self, Form):
        _translate = QtCore.QCoreApplication.translate
        Form.setWindowTitle(_translate("Form", "Form"))
        item = self.tableWidget.verticalHeaderItem(0)
        item.setText(_translate("Form", "New Row1"))
        item = self.tableWidget.verticalHeaderItem(1)
        item.setText(_translate("Form", "New Row2"))
        item = self.tableWidget.horizontalHeaderItem(0)
        item.setText(_translate("Form", "New Column1"))
        item = self.tableWidget.horizontalHeaderItem(1)
        item.setText(_translate("Form", "New Column2"))
        item = self.tableWidget.horizontalHeaderItem(2)
        item.setText(_translate("Form", "New Column3"))
        item = self.tableWidget.horizontalHeaderItem(3)
        item.setText(_translate("Form", "New Column4"))
        __sortingEnabled = self.tableWidget.isSortingEnabled()
        self.tableWidget.setSortingEnabled(False)
        item = self.tableWidget.item(0, 0)
        item.setText(_translate("Form", "1"))
        item = self.tableWidget.item(0, 1)
        item.setText(_translate("Form", "2"))
        item = self.tableWidget.item(0, 2)
        item.setText(_translate("Form", "3"))
        item = self.tableWidget.item(0, 3)
        item.setText(_translate("Form", "4"))
        item = self.tableWidget.item(1, 0)
        item.setText(_translate("Form", "8"))
        item = self.tableWidget.item(1, 1)
        item.setText(_translate("Form", "7"))
        item = self.tableWidget.item(1, 2)
        item.setText(_translate("Form", "6"))
        item = self.tableWidget.item(1, 3)
        item.setText(_translate("Form", "5"))
        self.tableWidget.setSortingEnabled(__sortingEnabled)
        item = self.tableWidget_4.verticalHeaderItem(0)
        item.setText(_translate("Form", "New Row1"))
        item = self.tableWidget_4.verticalHeaderItem(1)
        item.setText(_translate("Form", "New Row2"))
        item = self.tableWidget_4.horizontalHeaderItem(0)
        item.setText(_translate("Form", "New Column1"))
        item = self.tableWidget_4.horizontalHeaderItem(1)
        item.setText(_translate("Form", "New Column2"))
        item = self.tableWidget_4.horizontalHeaderItem(2)
        item.setText(_translate("Form", "New Column3"))
        item = self.tableWidget_4.horizontalHeaderItem(3)
        item.setText(_translate("Form", "New Column4"))
        __sortingEnabled = self.tableWidget_4.isSortingEnabled()
        self.tableWidget_4.setSortingEnabled(False)
        item = self.tableWidget_4.item(0, 0)
        item.setText(_translate("Form", "1"))
        item = self.tableWidget_4.item(0, 1)
        item.setText(_translate("Form", "2"))
        item = self.tableWidget_4.item(0, 2)
        item.setText(_translate("Form", "3"))
        item = self.tableWidget_4.item(0, 3)
        item.setText(_translate("Form", "4"))
        item = self.tableWidget_4.item(1, 0)
        item.setText(_translate("Form", "8"))
        item = self.tableWidget_4.item(1, 1)
        item.setText(_translate("Form", "7"))
        item = self.tableWidget_4.item(1, 2)
        item.setText(_translate("Form", "6"))
        item = self.tableWidget_4.item(1, 3)
        item.setText(_translate("Form", "5"))
        self.tableWidget_4.setSortingEnabled(__sortingEnabled)
        item = self.tableWidget_3.verticalHeaderItem(0)
        item.setText(_translate("Form", "New Row1"))
        item = self.tableWidget_3.verticalHeaderItem(1)
        item.setText(_translate("Form", "New Row2"))
        item = self.tableWidget_3.horizontalHeaderItem(0)
        item.setText(_translate("Form", "New Column1"))
        item = self.tableWidget_3.horizontalHeaderItem(1)
        item.setText(_translate("Form", "New Column2"))
        item = self.tableWidget_3.horizontalHeaderItem(2)
        item.setText(_translate("Form", "New Column3"))
        item = self.tableWidget_3.horizontalHeaderItem(3)
        item.setText(_translate("Form", "New Column4"))
        __sortingEnabled = self.tableWidget_3.isSortingEnabled()
        self.tableWidget_3.setSortingEnabled(False)
        item = self.tableWidget_3.item(0, 0)
        item.setText(_translate("Form", "1"))
        item = self.tableWidget_3.item(0, 1)
        item.setText(_translate("Form", "2"))
        item = self.tableWidget_3.item(0, 2)
        item.setText(_translate("Form", "3"))
        item = self.tableWidget_3.item(0, 3)
        item.setText(_translate("Form", "4"))
        item = self.tableWidget_3.item(1, 0)
        item.setText(_translate("Form", "8"))
        item = self.tableWidget_3.item(1, 1)
        item.setText(_translate("Form", "7"))
        item = self.tableWidget_3.item(1, 2)
        item.setText(_translate("Form", "6"))
        item = self.tableWidget_3.item(1, 3)
        item.setText(_translate("Form", "5"))
        self.tableWidget_3.setSortingEnabled(__sortingEnabled)
        item = self.tableWidget_2.verticalHeaderItem(0)
        item.setText(_translate("Form", "New Row1"))
        item = self.tableWidget_2.verticalHeaderItem(1)
        item.setText(_translate("Form", "New Row2"))
        item = self.tableWidget_2.horizontalHeaderItem(0)
        item.setText(_translate("Form", "New Column1"))
        item = self.tableWidget_2.horizontalHeaderItem(1)
        item.setText(_translate("Form", "New Column2"))
        item = self.tableWidget_2.horizontalHeaderItem(2)
        item.setText(_translate("Form", "New Column3"))
        item = self.tableWidget_2.horizontalHeaderItem(3)
        item.setText(_translate("Form", "New Column4"))
        __sortingEnabled = self.tableWidget_2.isSortingEnabled()
        self.tableWidget_2.setSortingEnabled(False)
        item = self.tableWidget_2.item(0, 0)
        item.setText(_translate("Form", "1"))
        item = self.tableWidget_2.item(0, 1)
        item.setText(_translate("Form", "2"))
        item = self.tableWidget_2.item(0, 2)
        item.setText(_translate("Form", "3"))
        item = self.tableWidget_2.item(0, 3)
        item.setText(_translate("Form", "4"))
        item = self.tableWidget_2.item(1, 0)
        item.setText(_translate("Form", "8"))
        item = self.tableWidget_2.item(1, 1)
        item.setText(_translate("Form", "7"))
        item = self.tableWidget_2.item(1, 2)
        item.setText(_translate("Form", "6"))
        item = self.tableWidget_2.item(1, 3)
        item.setText(_translate("Form", "5"))
        self.tableWidget_2.setSortingEnabled(__sortingEnabled)


if __name__ == "__main__":
    import sys
    app = QtWidgets.QApplication(sys.argv)
    Form = QtWidgets.QWidget()
    ui = Ui_Form()
    ui.setupUi(Form)
    Form.show()
    sys.exit(app.exec_())

В дополнение хотелось бы разобраться, откуда берется значение point в методе context из примера по ссылке. Заранее спасибо!


Ответы (1 шт):

Автор решения: S. Nick

void QWidget::customContextMenuRequested(const QPoint &pos)

Этот сигнал испускается, когда contextMenuPolicy виджета имеет значение Qt::CustomContextMenu и пользователь запросил контекстное меню в виджете.
Позиция pos — это позиция события контекстного меню, которое получает виджет. Обычно это координаты виджета.
Исключением из этого правила является QAbstractScrollArea и его подклассы, которые сопоставляют событие контекстного меню с координатами окна viewport().

import sys
from PyQt5 import QtWidgets, QtGui, QtCore
import traceback

#from test123 import Ui_Form
class Ui_Form(object):
    def setupUi(self, Form):
        Form.setObjectName("Form")
        Form.resize(494, 417)
        self.verticalLayout_2 = QtWidgets.QVBoxLayout(Form)
        self.verticalLayout_2.setObjectName("verticalLayout_2")
        self.verticalLayout = QtWidgets.QVBoxLayout()
        self.verticalLayout.setObjectName("verticalLayout")
        self.tableWidget = QtWidgets.QTableWidget(Form)
        self.tableWidget.setObjectName("tableWidget")
        self.tableWidget.setColumnCount(4)
        self.tableWidget.setRowCount(2)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget.setVerticalHeaderItem(0, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget.setVerticalHeaderItem(1, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget.setHorizontalHeaderItem(0, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget.setHorizontalHeaderItem(1, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget.setHorizontalHeaderItem(2, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget.setHorizontalHeaderItem(3, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget.setItem(0, 0, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget.setItem(0, 1, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget.setItem(0, 2, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget.setItem(0, 3, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget.setItem(1, 0, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget.setItem(1, 1, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget.setItem(1, 2, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget.setItem(1, 3, item)
        self.verticalLayout.addWidget(self.tableWidget)
        self.tableWidget_4 = QtWidgets.QTableWidget(Form)
        self.tableWidget_4.setObjectName("tableWidget_4")
        self.tableWidget_4.setColumnCount(4)
        self.tableWidget_4.setRowCount(2)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget_4.setVerticalHeaderItem(0, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget_4.setVerticalHeaderItem(1, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget_4.setHorizontalHeaderItem(0, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget_4.setHorizontalHeaderItem(1, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget_4.setHorizontalHeaderItem(2, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget_4.setHorizontalHeaderItem(3, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget_4.setItem(0, 0, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget_4.setItem(0, 1, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget_4.setItem(0, 2, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget_4.setItem(0, 3, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget_4.setItem(1, 0, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget_4.setItem(1, 1, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget_4.setItem(1, 2, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget_4.setItem(1, 3, item)
        self.verticalLayout.addWidget(self.tableWidget_4)
        self.tableWidget_3 = QtWidgets.QTableWidget(Form)
        self.tableWidget_3.setObjectName("tableWidget_3")
        self.tableWidget_3.setColumnCount(4)
        self.tableWidget_3.setRowCount(2)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget_3.setVerticalHeaderItem(0, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget_3.setVerticalHeaderItem(1, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget_3.setHorizontalHeaderItem(0, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget_3.setHorizontalHeaderItem(1, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget_3.setHorizontalHeaderItem(2, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget_3.setHorizontalHeaderItem(3, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget_3.setItem(0, 0, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget_3.setItem(0, 1, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget_3.setItem(0, 2, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget_3.setItem(0, 3, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget_3.setItem(1, 0, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget_3.setItem(1, 1, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget_3.setItem(1, 2, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget_3.setItem(1, 3, item)
        self.verticalLayout.addWidget(self.tableWidget_3)
        self.tableWidget_2 = QtWidgets.QTableWidget(Form)
        self.tableWidget_2.setObjectName("tableWidget_2")
        self.tableWidget_2.setColumnCount(4)
        self.tableWidget_2.setRowCount(2)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget_2.setVerticalHeaderItem(0, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget_2.setVerticalHeaderItem(1, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget_2.setHorizontalHeaderItem(0, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget_2.setHorizontalHeaderItem(1, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget_2.setHorizontalHeaderItem(2, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget_2.setHorizontalHeaderItem(3, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget_2.setItem(0, 0, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget_2.setItem(0, 1, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget_2.setItem(0, 2, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget_2.setItem(0, 3, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget_2.setItem(1, 0, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget_2.setItem(1, 1, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget_2.setItem(1, 2, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget_2.setItem(1, 3, item)
        self.verticalLayout.addWidget(self.tableWidget_2)
        self.verticalLayout_2.addLayout(self.verticalLayout)

        self.retranslateUi(Form)
        QtCore.QMetaObject.connectSlotsByName(Form)

    def retranslateUi(self, Form):
        _translate = QtCore.QCoreApplication.translate
        Form.setWindowTitle(_translate("Form", "Form"))
        item = self.tableWidget.verticalHeaderItem(0)
        item.setText(_translate("Form", "New Row1"))
        item = self.tableWidget.verticalHeaderItem(1)
        item.setText(_translate("Form", "New Row2"))
        item = self.tableWidget.horizontalHeaderItem(0)
        item.setText(_translate("Form", "New Column1"))
        item = self.tableWidget.horizontalHeaderItem(1)
        item.setText(_translate("Form", "New Column2"))
        item = self.tableWidget.horizontalHeaderItem(2)
        item.setText(_translate("Form", "New Column3"))
        item = self.tableWidget.horizontalHeaderItem(3)
        item.setText(_translate("Form", "New Column4"))
        __sortingEnabled = self.tableWidget.isSortingEnabled()
        self.tableWidget.setSortingEnabled(False)
        item = self.tableWidget.item(0, 0)
        item.setText(_translate("Form", "1"))
        item = self.tableWidget.item(0, 1)
        item.setText(_translate("Form", "2"))
        item = self.tableWidget.item(0, 2)
        item.setText(_translate("Form", "3"))
        item = self.tableWidget.item(0, 3)
        item.setText(_translate("Form", "4"))
        item = self.tableWidget.item(1, 0)
        item.setText(_translate("Form", "8"))
        item = self.tableWidget.item(1, 1)
        item.setText(_translate("Form", "7"))
        item = self.tableWidget.item(1, 2)
        item.setText(_translate("Form", "6"))
        item = self.tableWidget.item(1, 3)
        item.setText(_translate("Form", "5"))
        self.tableWidget.setSortingEnabled(__sortingEnabled)
        item = self.tableWidget_4.verticalHeaderItem(0)
        item.setText(_translate("Form", "New Row1"))
        item = self.tableWidget_4.verticalHeaderItem(1)
        item.setText(_translate("Form", "New Row2"))
        item = self.tableWidget_4.horizontalHeaderItem(0)
        item.setText(_translate("Form", "New Column1"))
        item = self.tableWidget_4.horizontalHeaderItem(1)
        item.setText(_translate("Form", "New Column2"))
        item = self.tableWidget_4.horizontalHeaderItem(2)
        item.setText(_translate("Form", "New Column3"))
        item = self.tableWidget_4.horizontalHeaderItem(3)
        item.setText(_translate("Form", "New Column4"))
        __sortingEnabled = self.tableWidget_4.isSortingEnabled()
        self.tableWidget_4.setSortingEnabled(False)
        item = self.tableWidget_4.item(0, 0)
        item.setText(_translate("Form", "1"))
        item = self.tableWidget_4.item(0, 1)
        item.setText(_translate("Form", "2"))
        item = self.tableWidget_4.item(0, 2)
        item.setText(_translate("Form", "3"))
        item = self.tableWidget_4.item(0, 3)
        item.setText(_translate("Form", "4"))
        item = self.tableWidget_4.item(1, 0)
        item.setText(_translate("Form", "8"))
        item = self.tableWidget_4.item(1, 1)
        item.setText(_translate("Form", "7"))
        item = self.tableWidget_4.item(1, 2)
        item.setText(_translate("Form", "6"))
        item = self.tableWidget_4.item(1, 3)
        item.setText(_translate("Form", "5"))
        self.tableWidget_4.setSortingEnabled(__sortingEnabled)
        item = self.tableWidget_3.verticalHeaderItem(0)
        item.setText(_translate("Form", "New Row1"))
        item = self.tableWidget_3.verticalHeaderItem(1)
        item.setText(_translate("Form", "New Row2"))
        item = self.tableWidget_3.horizontalHeaderItem(0)
        item.setText(_translate("Form", "New Column1"))
        item = self.tableWidget_3.horizontalHeaderItem(1)
        item.setText(_translate("Form", "New Column2"))
        item = self.tableWidget_3.horizontalHeaderItem(2)
        item.setText(_translate("Form", "New Column3"))
        item = self.tableWidget_3.horizontalHeaderItem(3)
        item.setText(_translate("Form", "New Column4"))
        __sortingEnabled = self.tableWidget_3.isSortingEnabled()
        self.tableWidget_3.setSortingEnabled(False)
        item = self.tableWidget_3.item(0, 0)
        item.setText(_translate("Form", "1"))
        item = self.tableWidget_3.item(0, 1)
        item.setText(_translate("Form", "2"))
        item = self.tableWidget_3.item(0, 2)
        item.setText(_translate("Form", "3"))
        item = self.tableWidget_3.item(0, 3)
        item.setText(_translate("Form", "4"))
        item = self.tableWidget_3.item(1, 0)
        item.setText(_translate("Form", "8"))
        item = self.tableWidget_3.item(1, 1)
        item.setText(_translate("Form", "7"))
        item = self.tableWidget_3.item(1, 2)
        item.setText(_translate("Form", "6"))
        item = self.tableWidget_3.item(1, 3)
        item.setText(_translate("Form", "5"))
        self.tableWidget_3.setSortingEnabled(__sortingEnabled)
        item = self.tableWidget_2.verticalHeaderItem(0)
        item.setText(_translate("Form", "New Row1"))
        item = self.tableWidget_2.verticalHeaderItem(1)
        item.setText(_translate("Form", "New Row2"))
        item = self.tableWidget_2.horizontalHeaderItem(0)
        item.setText(_translate("Form", "New Column1"))
        item = self.tableWidget_2.horizontalHeaderItem(1)
        item.setText(_translate("Form", "New Column2"))
        item = self.tableWidget_2.horizontalHeaderItem(2)
        item.setText(_translate("Form", "New Column3"))
        item = self.tableWidget_2.horizontalHeaderItem(3)
        item.setText(_translate("Form", "New Column4"))
        __sortingEnabled = self.tableWidget_2.isSortingEnabled()
        self.tableWidget_2.setSortingEnabled(False)
        item = self.tableWidget_2.item(0, 0)
        item.setText(_translate("Form", "1"))
        item = self.tableWidget_2.item(0, 1)
        item.setText(_translate("Form", "2"))
        item = self.tableWidget_2.item(0, 2)
        item.setText(_translate("Form", "3"))
        item = self.tableWidget_2.item(0, 3)
        item.setText(_translate("Form", "4"))
        item = self.tableWidget_2.item(1, 0)
        item.setText(_translate("Form", "8"))
        item = self.tableWidget_2.item(1, 1)
        item.setText(_translate("Form", "7"))
        item = self.tableWidget_2.item(1, 2)
        item.setText(_translate("Form", "6"))
        item = self.tableWidget_2.item(1, 3)
        item.setText(_translate("Form", "5"))
        self.tableWidget_2.setSortingEnabled(__sortingEnabled)
        

class Main(QtWidgets.QWidget):
    def __init__(self):
        super(Main, self).__init__()
        self.ui = Ui_Form()
        self.ui.setupUi(self)
        tables = (self.ui.tableWidget, self.ui.tableWidget_2, self.ui.tableWidget_3, self.ui.tableWidget_4)
        for table in tables:
            table.setContextMenuPolicy(QtCore.Qt.CustomContextMenu)

# Как передать переменную table в context
#            table.customContextMenuRequested.connect(self.context(table)) 
            table.customContextMenuRequested.connect(
                lambda pos, table=table: self.context(pos, table))

    def context(self, point, table):
        menu = QtWidgets.QMenu()
        if table.itemAt(point):
            edit_question = QtWidgets.QAction('Редактировать вопрос', menu)
            edit_question.triggered.connect(
                lambda: print(
                    f"{table.objectName()} -> Текст в ячейке: {table.itemAt(point).text()}"))
            menu.addAction(edit_question)
        else:
            pass
        menu.exec(table.mapToGlobal(point))
        
        
if __name__ == "__main__":
    app = QtWidgets.QApplication(sys.argv)
    main = Main()
    main.show()
    sys.exit(app.exec_())

введите сюда описание изображения

→ Ссылка