Как при нажатии на checkbox переместить запись в другую таблицу?

Всем привет. Я хочу по нажатии на checkbox поменять у записи "Ожидание" на "Выполнено" и, соответственно, переместить эту строчку в другой tablewidget (их всего 4, хранятся в tabbar каждый).
Также, когда это произошло, необходимо обновить эту запись в таблице "Все", где хранятся все записи(см. скриншот 2).

скриншот 1

Если идти справа налево: ставим true, вместо "ожидание" заполняется "выполнено" и запись переходит в другую таблицу.

Это основная таблица, в ней запись так же должна сменить своё состояние.
Если же мы снимаем галку, то нужно её переместить обратно в "ожидают"

скриншот 2

В основной программе я работаю с БД, поэтому данные заполнены формально через Qt Designer. Сейчас главное понять, как перемещать строки по установке флага и менять в ней поле "Состояние".

Нужно, полагаю, в методе создания чекбоксов с помощью .stateChanged.connect() при true переместить строку с этим чекбоксом в tableWidget_7, а при false в tablewidget_8 (или в tablewidget_9, если задачу отметили выполненной там). Но как определять номера строк и обращаться к отдельному item-у - непонятно...

Код файла интерфейса test.py

    # -*- coding: utf-8 -*-

# Form implementation generated from reading ui file 'C:\Users\user\Desktop\pythonProject\untitled.ui'
#
# Created by: PyQt5 UI code generator 5.15.5
#
# WARNING: Any manual changes made to this file will be lost when pyuic5 is
# run again.  Do not edit this file unless you know what you are doing.


from PyQt5 import QtCore, QtGui, QtWidgets


class Ui_Form(object):
    def setupUi(self, Form):
        Form.setObjectName("Form")
        Form.resize(917, 400)
        Form.setStyleSheet("background-color: rgb(45, 45, 45);\n"
"")
        self.tabWidget = QtWidgets.QTabWidget(Form)
        self.tabWidget.setGeometry(QtCore.QRect(210, 120, 471, 171))
        self.tabWidget.setObjectName("tabWidget")
        self.tab = QtWidgets.QWidget()
        self.tab.setObjectName("tab")
        self.tableWidget_6 = QtWidgets.QTableWidget(self.tab)
        self.tableWidget_6.setGeometry(QtCore.QRect(0, 0, 471, 151))
        self.tableWidget_6.setStyleSheet("color: red;\n"
"background-color: rgb(151,63,175);")
        self.tableWidget_6.setObjectName("tableWidget_6")
        self.tableWidget_6.setColumnCount(4)
        self.tableWidget_6.setRowCount(4)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget_6.setVerticalHeaderItem(0, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget_6.setVerticalHeaderItem(1, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget_6.setVerticalHeaderItem(2, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget_6.setVerticalHeaderItem(3, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget_6.setHorizontalHeaderItem(0, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget_6.setHorizontalHeaderItem(1, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget_6.setHorizontalHeaderItem(2, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget_6.setHorizontalHeaderItem(3, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget_6.setItem(0, 0, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget_6.setItem(0, 1, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget_6.setItem(0, 2, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget_6.setItem(0, 3, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget_6.setItem(1, 0, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget_6.setItem(1, 1, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget_6.setItem(1, 2, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget_6.setItem(2, 0, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget_6.setItem(2, 1, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget_6.setItem(2, 2, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget_6.setItem(3, 0, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget_6.setItem(3, 1, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget_6.setItem(3, 2, item)
        self.tabWidget.addTab(self.tab, "")
        self.tab_2 = QtWidgets.QWidget()
        self.tab_2.setObjectName("tab_2")
        self.tableWidget_7 = QtWidgets.QTableWidget(self.tab_2)
        self.tableWidget_7.setGeometry(QtCore.QRect(0, 0, 471, 151))
        self.tableWidget_7.setStyleSheet("color: red;\n"
"background-color: rgb(151,63,175);")
        self.tableWidget_7.setObjectName("tableWidget_7")
        self.tableWidget_7.setColumnCount(4)
        self.tableWidget_7.setRowCount(1)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget_7.setVerticalHeaderItem(0, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget_7.setHorizontalHeaderItem(0, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget_7.setHorizontalHeaderItem(1, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget_7.setHorizontalHeaderItem(2, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget_7.setHorizontalHeaderItem(3, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget_7.setItem(0, 0, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget_7.setItem(0, 1, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget_7.setItem(0, 2, item)
        self.tabWidget.addTab(self.tab_2, "")
        self.tab_3 = QtWidgets.QWidget()
        self.tab_3.setObjectName("tab_3")
        self.tableWidget_8 = QtWidgets.QTableWidget(self.tab_3)
        self.tableWidget_8.setGeometry(QtCore.QRect(0, 0, 471, 151))
        self.tableWidget_8.setStyleSheet("color: red;\n"
"background-color: rgb(151,63,175);\n"
"")
        self.tableWidget_8.setObjectName("tableWidget_8")
        self.tableWidget_8.setColumnCount(4)
        self.tableWidget_8.setRowCount(2)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget_8.setVerticalHeaderItem(0, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget_8.setVerticalHeaderItem(1, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget_8.setHorizontalHeaderItem(0, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget_8.setHorizontalHeaderItem(1, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget_8.setHorizontalHeaderItem(2, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget_8.setHorizontalHeaderItem(3, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget_8.setItem(0, 0, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget_8.setItem(0, 1, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget_8.setItem(0, 2, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget_8.setItem(0, 3, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget_8.setItem(1, 0, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget_8.setItem(1, 1, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget_8.setItem(1, 2, item)
        self.tabWidget.addTab(self.tab_3, "")
        self.tab_4 = QtWidgets.QWidget()
        self.tab_4.setObjectName("tab_4")
        self.tableWidget_9 = QtWidgets.QTableWidget(self.tab_4)
        self.tableWidget_9.setGeometry(QtCore.QRect(0, 0, 471, 151))
        self.tableWidget_9.setStyleSheet("color: red;\n"
"background-color: rgb(151,63,175);")
        self.tableWidget_9.setObjectName("tableWidget_9")
        self.tableWidget_9.setColumnCount(4)
        self.tableWidget_9.setRowCount(1)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget_9.setVerticalHeaderItem(0, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget_9.setHorizontalHeaderItem(0, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget_9.setHorizontalHeaderItem(1, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget_9.setHorizontalHeaderItem(2, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget_9.setHorizontalHeaderItem(3, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget_9.setItem(0, 0, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget_9.setItem(0, 1, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget_9.setItem(0, 2, item)
        self.tabWidget.addTab(self.tab_4, "")

        self.retranslateUi(Form)
        self.tabWidget.setCurrentIndex(0)
        QtCore.QMetaObject.connectSlotsByName(Form)

    def retranslateUi(self, Form):
        _translate = QtCore.QCoreApplication.translate
        Form.setWindowTitle(_translate("Form", "Form"))
        item = self.tableWidget_6.verticalHeaderItem(0)
        item.setText(_translate("Form", "New Row"))
        item = self.tableWidget_6.verticalHeaderItem(1)
        item.setText(_translate("Form", "New Row"))
        item = self.tableWidget_6.verticalHeaderItem(2)
        item.setText(_translate("Form", "New Row"))
        item = self.tableWidget_6.verticalHeaderItem(3)
        item.setText(_translate("Form", "New Row"))
        item = self.tableWidget_6.horizontalHeaderItem(0)
        item.setText(_translate("Form", "Задача"))
        item = self.tableWidget_6.horizontalHeaderItem(1)
        item.setText(_translate("Form", "Дата"))
        item = self.tableWidget_6.horizontalHeaderItem(2)
        item.setText(_translate("Form", "Состояние"))
        item = self.tableWidget_6.horizontalHeaderItem(3)
        item.setText(_translate("Form", "Статус"))
        __sortingEnabled = self.tableWidget_6.isSortingEnabled()
        self.tableWidget_6.setSortingEnabled(False)
        item = self.tableWidget_6.item(0, 0)
        item.setText(_translate("Form", "zzz"))
        item = self.tableWidget_6.item(0, 1)
        item.setText(_translate("Form", "02-12-2021"))
        item = self.tableWidget_6.item(0, 2)
        item.setText(_translate("Form", "Ожидание"))
        item = self.tableWidget_6.item(1, 0)
        item.setText(_translate("Form", "xxx"))
        item = self.tableWidget_6.item(1, 1)
        item.setText(_translate("Form", "11-12-2021"))
        item = self.tableWidget_6.item(1, 2)
        item.setText(_translate("Form", "Ожидание"))
        item = self.tableWidget_6.item(2, 0)
        item.setText(_translate("Form", "ccc"))
        item = self.tableWidget_6.item(2, 1)
        item.setText(_translate("Form", "18-11-2021"))
        item = self.tableWidget_6.item(2, 2)
        item.setText(_translate("Form", "Просрочено"))
        item = self.tableWidget_6.item(3, 0)
        item.setText(_translate("Form", "vvv"))
        item = self.tableWidget_6.item(3, 1)
        item.setText(_translate("Form", "22-02-2021"))
        item = self.tableWidget_6.item(3, 2)
        item.setText(_translate("Form", "Выполнено"))
        self.tableWidget_6.setSortingEnabled(__sortingEnabled)
        self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab), _translate("Form", "Все"))
        item = self.tableWidget_7.verticalHeaderItem(0)
        item.setText(_translate("Form", "New Row"))
        item = self.tableWidget_7.horizontalHeaderItem(0)
        item.setText(_translate("Form", "Задача"))
        item = self.tableWidget_7.horizontalHeaderItem(1)
        item.setText(_translate("Form", "Дата"))
        item = self.tableWidget_7.horizontalHeaderItem(2)
        item.setText(_translate("Form", "Состояние"))
        item = self.tableWidget_7.horizontalHeaderItem(3)
        item.setText(_translate("Form", "Статус"))
        __sortingEnabled = self.tableWidget_7.isSortingEnabled()
        self.tableWidget_7.setSortingEnabled(False)
        item = self.tableWidget_7.item(0, 0)
        item.setText(_translate("Form", "vvv"))
        item = self.tableWidget_7.item(0, 1)
        item.setText(_translate("Form", "22-02-2021"))
        item = self.tableWidget_7.item(0, 2)
        item.setText(_translate("Form", "Выполнено"))
        self.tableWidget_7.setSortingEnabled(__sortingEnabled)
        self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab_2), _translate("Form", "Выполнены"))
        item = self.tableWidget_8.verticalHeaderItem(0)
        item.setText(_translate("Form", "New Row"))
        item = self.tableWidget_8.verticalHeaderItem(1)
        item.setText(_translate("Form", "New Row"))
        item = self.tableWidget_8.horizontalHeaderItem(0)
        item.setText(_translate("Form", "Задача"))
        item = self.tableWidget_8.horizontalHeaderItem(1)
        item.setText(_translate("Form", "Дата"))
        item = self.tableWidget_8.horizontalHeaderItem(2)
        item.setText(_translate("Form", "Состояние"))
        item = self.tableWidget_8.horizontalHeaderItem(3)
        item.setText(_translate("Form", "Статус"))
        __sortingEnabled = self.tableWidget_8.isSortingEnabled()
        self.tableWidget_8.setSortingEnabled(False)
        item = self.tableWidget_8.item(0, 0)
        item.setText(_translate("Form", "zzz"))
        item = self.tableWidget_8.item(0, 1)
        item.setText(_translate("Form", "02-12-2021"))
        item = self.tableWidget_8.item(0, 2)
        item.setText(_translate("Form", "Ожидание"))
        item = self.tableWidget_8.item(1, 0)
        item.setText(_translate("Form", "xxx"))
        item = self.tableWidget_8.item(1, 1)
        item.setText(_translate("Form", "11-12-2021"))
        item = self.tableWidget_8.item(1, 2)
        item.setText(_translate("Form", "Ожидание"))
        self.tableWidget_8.setSortingEnabled(__sortingEnabled)
        self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab_3), _translate("Form", "Ожидание"))
        item = self.tableWidget_9.verticalHeaderItem(0)
        item.setText(_translate("Form", "New Row"))
        item = self.tableWidget_9.horizontalHeaderItem(0)
        item.setText(_translate("Form", "Задача"))
        item = self.tableWidget_9.horizontalHeaderItem(1)
        item.setText(_translate("Form", "Дата"))
        item = self.tableWidget_9.horizontalHeaderItem(2)
        item.setText(_translate("Form", "Состояние"))
        item = self.tableWidget_9.horizontalHeaderItem(3)
        item.setText(_translate("Form", "Статус"))
        __sortingEnabled = self.tableWidget_9.isSortingEnabled()
        self.tableWidget_9.setSortingEnabled(False)
        item = self.tableWidget_9.item(0, 0)
        item.setText(_translate("Form", "ccc"))
        item = self.tableWidget_9.item(0, 1)
        item.setText(_translate("Form", "18-11-2021"))
        item = self.tableWidget_9.item(0, 2)
        item.setText(_translate("Form", "Просрочено"))
        self.tableWidget_9.setSortingEnabled(__sortingEnabled)
        self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab_4), _translate("Form", "Просрочены"))


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_())

Основной код файла main.py

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


class tabletest(QtWidgets.QMainWindow, test.Ui_Form):
    def __init__(self):
        super().__init__()
        self.setupUi(self)  # Это нужно для инициализации нашего дизайна
        self.filltab(self.tableWidget_6)
        self.filltab(self.tableWidget_7)
        self.filltab(self.tableWidget_8)
        self.filltab(self.tableWidget_9)

    def filltab(self, table):
        row_count6 = table.rowCount()
        print(row_count6)
        for row in range(row_count6):
            check_box = self.create_checkbox()
            table.setCellWidget(row, 3, check_box)

    def create_checkbox(self):
        Widget = QtWidgets.QWidget()
        pCheckBox = QtWidgets.QCheckBox()
        pLayout = QtWidgets.QHBoxLayout(Widget)
        pLayout.addWidget(pCheckBox)
        pLayout.setAlignment(QtCore.Qt.AlignCenter)
        pLayout.setContentsMargins(0, 0, 0, 0)
        Widget.setLayout(pLayout)
        return Widget


def main():
    app = QtWidgets.QApplication(sys.argv)  # Новый экземпляр QApplication
    window = tabletest()  # Создаём объект класса TaskManager
    window.setWindowIcon(QtGui.QIcon("icon.png"))
    window.show()  # Показываем окно
    app.exec_()  # и запускаем приложение


if __name__ == '__main__':  # Если мы запускаем файл напрямую, а не импортируем
    main()  # то запускаем функцию main()


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

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

Я не буду прописывать логику, которую вы предлагаете, т.к. мне кажется, что данные должны быть в одной таблице, а не в четырех. А в каждой вкладке показывать то, что вам надо.

Но все необходимое для реализации вашей логики я сделал.

Обратите внимание на:

  • self.tabWidget.currentChanged.connect(...)

  • check_box.stateChanged.connect(...)

  • и другие изменения, которые я сделал.


import sys
from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.Qt import *

#import test
class Ui_Form(object):
    def setupUi(self, Form):
        Form.setObjectName("Form")
        Form.resize(917, 400)
        Form.setStyleSheet("background-color: rgb(45, 45, 45);\n"
"")
        self.tabWidget = QtWidgets.QTabWidget(Form)
#        self.tabWidget.setGeometry(QtCore.QRect(210, 120, 471, 171))
        self.tabWidget.setObjectName("tabWidget")
        
        self.tab = QtWidgets.QWidget()
        self.tab.setObjectName("tab")
        self.tableWidget_6 = QtWidgets.QTableWidget(self.tab)
#        self.tableWidget_6.setGeometry(QtCore.QRect(0, 0, 471, 151))
        self.tableWidget_6.setStyleSheet("color: #411F1F;\n"
"background-color: rgb(151,163,175);")
        self.tableWidget_6.setObjectName("tableWidget_6")
        self.tableWidget_6.setColumnCount(4)
        self.tableWidget_6.setRowCount(4)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget_6.setVerticalHeaderItem(0, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget_6.setVerticalHeaderItem(1, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget_6.setVerticalHeaderItem(2, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget_6.setVerticalHeaderItem(3, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget_6.setHorizontalHeaderItem(0, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget_6.setHorizontalHeaderItem(1, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget_6.setHorizontalHeaderItem(2, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget_6.setHorizontalHeaderItem(3, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget_6.setItem(0, 0, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget_6.setItem(0, 1, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget_6.setItem(0, 2, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget_6.setItem(0, 3, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget_6.setItem(1, 0, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget_6.setItem(1, 1, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget_6.setItem(1, 2, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget_6.setItem(2, 0, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget_6.setItem(2, 1, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget_6.setItem(2, 2, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget_6.setItem(3, 0, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget_6.setItem(3, 1, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget_6.setItem(3, 2, item)
        
        layout = QtWidgets.QVBoxLayout(self.tab)
        layout.addWidget(self.tableWidget_6)
        
        self.tabWidget.addTab(self.tab, "")
        
        self.tab_2 = QtWidgets.QWidget()
        self.tab_2.setObjectName("tab_2")
        self.tableWidget_7 = QtWidgets.QTableWidget(self.tab_2)
        self.tableWidget_7.setGeometry(QtCore.QRect(0, 0, 471, 151))
        self.tableWidget_7.setStyleSheet("color: red;\n"
"background-color: rgb(151,63,175);")
        self.tableWidget_7.setObjectName("tableWidget_7")
        self.tableWidget_7.setColumnCount(4)
        self.tableWidget_7.setRowCount(1)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget_7.setVerticalHeaderItem(0, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget_7.setHorizontalHeaderItem(0, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget_7.setHorizontalHeaderItem(1, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget_7.setHorizontalHeaderItem(2, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget_7.setHorizontalHeaderItem(3, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget_7.setItem(0, 0, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget_7.setItem(0, 1, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget_7.setItem(0, 2, item)
        self.tabWidget.addTab(self.tab_2, "")
        
        self.tab_3 = QtWidgets.QWidget()
        self.tab_3.setObjectName("tab_3")
        self.tableWidget_8 = QtWidgets.QTableWidget(self.tab_3)
        self.tableWidget_8.setGeometry(QtCore.QRect(0, 0, 471, 151))
        self.tableWidget_8.setStyleSheet("color: red;\n"
"background-color: rgb(151,63,175);\n"
"")
        self.tableWidget_8.setObjectName("tableWidget_8")
        self.tableWidget_8.setColumnCount(4)
        self.tableWidget_8.setRowCount(2)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget_8.setVerticalHeaderItem(0, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget_8.setVerticalHeaderItem(1, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget_8.setHorizontalHeaderItem(0, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget_8.setHorizontalHeaderItem(1, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget_8.setHorizontalHeaderItem(2, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget_8.setHorizontalHeaderItem(3, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget_8.setItem(0, 0, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget_8.setItem(0, 1, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget_8.setItem(0, 2, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget_8.setItem(0, 3, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget_8.setItem(1, 0, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget_8.setItem(1, 1, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget_8.setItem(1, 2, item)
        self.tabWidget.addTab(self.tab_3, "")
        
        
        self.tab_4 = QtWidgets.QWidget()
        self.tab_4.setObjectName("tab_4")
        self.tableWidget_9 = QtWidgets.QTableWidget(self.tab_4)
        self.tableWidget_9.setGeometry(QtCore.QRect(0, 0, 471, 151))
        self.tableWidget_9.setStyleSheet("color: red;\n"
"background-color: rgb(151,63,175);")
        self.tableWidget_9.setObjectName("tableWidget_9")
        self.tableWidget_9.setColumnCount(4)
        self.tableWidget_9.setRowCount(1)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget_9.setVerticalHeaderItem(0, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget_9.setHorizontalHeaderItem(0, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget_9.setHorizontalHeaderItem(1, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget_9.setHorizontalHeaderItem(2, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget_9.setHorizontalHeaderItem(3, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget_9.setItem(0, 0, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget_9.setItem(0, 1, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget_9.setItem(0, 2, item)
        self.tabWidget.addTab(self.tab_4, "")

        self.retranslateUi(Form)
        self.tabWidget.setCurrentIndex(0)
        QtCore.QMetaObject.connectSlotsByName(Form)

    def retranslateUi(self, Form):
        _translate = QtCore.QCoreApplication.translate
        Form.setWindowTitle(_translate("Form", "Form"))
        item = self.tableWidget_6.verticalHeaderItem(0)
        item.setText(_translate("Form", "New Row"))
        item = self.tableWidget_6.verticalHeaderItem(1)
        item.setText(_translate("Form", "New Row"))
        item = self.tableWidget_6.verticalHeaderItem(2)
        item.setText(_translate("Form", "New Row"))
        item = self.tableWidget_6.verticalHeaderItem(3)
        item.setText(_translate("Form", "New Row"))
        item = self.tableWidget_6.horizontalHeaderItem(0)
        item.setText(_translate("Form", "Задача"))
        item = self.tableWidget_6.horizontalHeaderItem(1)
        item.setText(_translate("Form", "Дата"))
        item = self.tableWidget_6.horizontalHeaderItem(2)
        item.setText(_translate("Form", "Состояние"))
        item = self.tableWidget_6.horizontalHeaderItem(3)
        item.setText(_translate("Form", "Статус"))
        __sortingEnabled = self.tableWidget_6.isSortingEnabled()
        self.tableWidget_6.setSortingEnabled(False)
        item = self.tableWidget_6.item(0, 0)
        item.setText(_translate("Form", "zzz"))
        item = self.tableWidget_6.item(0, 1)
        item.setText(_translate("Form", "02-12-2021"))
        item = self.tableWidget_6.item(0, 2)
        item.setText(_translate("Form", "Ожидание"))
        item = self.tableWidget_6.item(1, 0)
        item.setText(_translate("Form", "xxx"))
        item = self.tableWidget_6.item(1, 1)
        item.setText(_translate("Form", "11-12-2021"))
        item = self.tableWidget_6.item(1, 2)
        item.setText(_translate("Form", "Ожидание"))
        item = self.tableWidget_6.item(2, 0)
        item.setText(_translate("Form", "ccc"))
        item = self.tableWidget_6.item(2, 1)
        item.setText(_translate("Form", "18-11-2021"))
        item = self.tableWidget_6.item(2, 2)
        item.setText(_translate("Form", "Просрочено"))
        item = self.tableWidget_6.item(3, 0)
        item.setText(_translate("Form", "vvv"))
        item = self.tableWidget_6.item(3, 1)
        item.setText(_translate("Form", "22-02-2021"))
        item = self.tableWidget_6.item(3, 2)
        item.setText(_translate("Form", "Выполнено"))
        self.tableWidget_6.setSortingEnabled(__sortingEnabled)
        self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab), _translate("Form", "Все"))
        item = self.tableWidget_7.verticalHeaderItem(0)
        item.setText(_translate("Form", "New Row"))
        item = self.tableWidget_7.horizontalHeaderItem(0)
        item.setText(_translate("Form", "Задача"))
        item = self.tableWidget_7.horizontalHeaderItem(1)
        item.setText(_translate("Form", "Дата"))
        item = self.tableWidget_7.horizontalHeaderItem(2)
        item.setText(_translate("Form", "Состояние"))
        item = self.tableWidget_7.horizontalHeaderItem(3)
        item.setText(_translate("Form", "Статус"))
        __sortingEnabled = self.tableWidget_7.isSortingEnabled()
        self.tableWidget_7.setSortingEnabled(False)
        item = self.tableWidget_7.item(0, 0)
        item.setText(_translate("Form", "vvv"))
        item = self.tableWidget_7.item(0, 1)
        item.setText(_translate("Form", "22-02-2021"))
        item = self.tableWidget_7.item(0, 2)
        item.setText(_translate("Form", "Выполнено"))
        self.tableWidget_7.setSortingEnabled(__sortingEnabled)
        self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab_2), _translate("Form", "Выполнены"))
        item = self.tableWidget_8.verticalHeaderItem(0)
        item.setText(_translate("Form", "New Row"))
        item = self.tableWidget_8.verticalHeaderItem(1)
        item.setText(_translate("Form", "New Row"))
        item = self.tableWidget_8.horizontalHeaderItem(0)
        item.setText(_translate("Form", "Задача"))
        item = self.tableWidget_8.horizontalHeaderItem(1)
        item.setText(_translate("Form", "Дата"))
        item = self.tableWidget_8.horizontalHeaderItem(2)
        item.setText(_translate("Form", "Состояние"))
        item = self.tableWidget_8.horizontalHeaderItem(3)
        item.setText(_translate("Form", "Статус"))
        __sortingEnabled = self.tableWidget_8.isSortingEnabled()
        self.tableWidget_8.setSortingEnabled(False)
        item = self.tableWidget_8.item(0, 0)
        item.setText(_translate("Form", "zzz"))
        item = self.tableWidget_8.item(0, 1)
        item.setText(_translate("Form", "02-12-2021"))
        item = self.tableWidget_8.item(0, 2)
        item.setText(_translate("Form", "Ожидание"))
        item = self.tableWidget_8.item(1, 0)
        item.setText(_translate("Form", "xxx"))
        item = self.tableWidget_8.item(1, 1)
        item.setText(_translate("Form", "11-12-2021"))
        item = self.tableWidget_8.item(1, 2)
        item.setText(_translate("Form", "Ожидание"))
        self.tableWidget_8.setSortingEnabled(__sortingEnabled)
        self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab_3), _translate("Form", "Ожидание"))
        item = self.tableWidget_9.verticalHeaderItem(0)
        item.setText(_translate("Form", "New Row"))
        item = self.tableWidget_9.horizontalHeaderItem(0)
        item.setText(_translate("Form", "Задача"))
        item = self.tableWidget_9.horizontalHeaderItem(1)
        item.setText(_translate("Form", "Дата"))
        item = self.tableWidget_9.horizontalHeaderItem(2)
        item.setText(_translate("Form", "Состояние"))
        item = self.tableWidget_9.horizontalHeaderItem(3)
        item.setText(_translate("Form", "Статус"))
        __sortingEnabled = self.tableWidget_9.isSortingEnabled()
        self.tableWidget_9.setSortingEnabled(False)
        item = self.tableWidget_9.item(0, 0)
        item.setText(_translate("Form", "ccc"))
        item = self.tableWidget_9.item(0, 1)
        item.setText(_translate("Form", "18-11-2021"))
        item = self.tableWidget_9.item(0, 2)
        item.setText(_translate("Form", "Просрочено"))
        self.tableWidget_9.setSortingEnabled(__sortingEnabled)
        self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab_4), _translate("Form", "Просрочены"))


class CheckBox(QtWidgets.QCheckBox):
    def __init__(self):
        super().__init__()

#class TableTest(QtWidgets.QMainWindow, test.Ui_Form):
#                         vvvvvvv <-------------------------------------- !!!
class TableTest(QtWidgets.QWidget, Ui_Form):
    def __init__(self):
        super().__init__()
        self.setupUi(self)                 
        
        layout = QGridLayout(self)                                          # +
        layout.addWidget(self.tabWidget)                                    # +
        
        self.filltab(self.tableWidget_6)
        self.filltab(self.tableWidget_7)
        self.filltab(self.tableWidget_8)
        self.filltab(self.tableWidget_9)
# +++        
        self.tabWidget.currentChanged.connect(self.qtabwidget_currentchanged) # +++

    def filltab(self, table):
        row_count6 = table.rowCount()
        print(f'{table.objectName()} --> {row_count6} запись/и/ей')
        for row in range(row_count6):
#            check_box = self.create_checkbox()
#           vvvvvv  vvvvvvvvv <----------- !!!
            widget, check_box = self.create_checkbox()                       # +++         
            check_box.stateChanged.connect(                                  # +++
                lambda state,  
                       tb=table,                 # vvvvv  vv  vvv <----------- +++
                       row=row: self.state_changed(state, tb, row)
            )        
            
#            table.setCellWidget(row, 3, check_box)
#                                       vvvvvv          <----------- !!!
            table.setCellWidget(row, 3, widget)

    def create_checkbox(self):
        widget = QtWidgets.QWidget()
        pCheckBox = QtWidgets.QCheckBox()
        pLayout = QtWidgets.QHBoxLayout(widget)
        pLayout.addWidget(pCheckBox)
        pLayout.setAlignment(QtCore.Qt.AlignCenter)
        pLayout.setContentsMargins(0, 0, 0, 0)
        widget.setLayout(pLayout)
        return widget, pCheckBox

# +++ vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
    def state_changed(self, state, tb, row):
        # тут будет какая-то логика
        if state:  
            print(f'On  =`{state}`, table=`{tb.objectName()}`, row=`{row}`')
        else:
            print(f'Off =`{state}`, table=`{tb.objectName()}`, row=`{row}`')   

    @QtCore.pyqtSlot(int)
    def qtabwidget_currentchanged(self, index):
        print(f"\n Hовый индекс текущей страницы: {index}")
        print(f" : текст метки для вкладки: {self.tabWidget.tabText(index)}")
        # тут возможно будет какая-то логика
# +++ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^     
            

if __name__ == '__main__': 
    app = QtWidgets.QApplication(sys.argv) 
    app.setFont(QtGui.QFont("Times", 12, QtGui.QFont.Bold))
    window = TableTest()  
    window.setWindowIcon(QtGui.QIcon("im.png"))
    window.show()  
    app.exec_()  

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

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

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

→ Ссылка