Python 在UI文件中创建的QTableWidget的PyQt子类化函数

Python 在UI文件中创建的QTableWidget的PyQt子类化函数,python,pyqt,pyqt5,subclassing,Python,Pyqt,Pyqt5,Subclassing,我正在寻找有关如何对在QT Designer/Creator中创建的QTableWidget进行子类化以执行其他任务(如在按键时删除表行)的信息(或确认,如果不可能) 我已将UI文件转换为python(mainwindow.py),并在脚本示例的顶部导入该文件。然后,我使用以下命令初始化UI对象: self.ui = Ui_MainWindow() 我有一些方法是通过信号来实现的,比如添加行,我使用“self.ui.main\u queue\u tableWidget”引用这些行,这是在QT

我正在寻找有关如何对在QT Designer/Creator中创建的QTableWidget进行子类化以执行其他任务(如在按键时删除表行)的信息(或确认,如果不可能)

我已将UI文件转换为python(mainwindow.py),并在脚本示例的顶部导入该文件。然后,我使用以下命令初始化UI对象:

self.ui = Ui_MainWindow()
我有一些方法是通过信号来实现的,比如添加行,我使用“self.ui.main\u queue\u tableWidget”引用这些行,这是在QT designer中指定的表名(如下所示)

我看到了删除QTableWidget子类中的一行的答案,但它处理的是在代码实例中创建的表,我想知道如何做同样的事情,但QT设计器UI文件中已经创建了一个QTabletWidget(转换为.py文件)当前使用self.ui.main\u queue\u tableWidget引用的

以下是我到目前为止得到的一个精简版本:

import sys
from PyQt5.QtWidgets import *
from mainwindow import *

class MyTable(QtWidgets.QTableWidget):

    def keyPressEvent(self, event):
        if event.key() == QtCore.Qt.Key_Delete:
            row = self.currentRow()
            self.removeRow(row)
        else:
            super().keyPressEvent(event)

class MainWindow(QMainWindow):
    def __init__(self):
        super().__init__()

        # Initialise the UI object
        self.ui = Ui_MainWindow()
        self.ui.setupUi(self)

        #.... some signals here ...

    def do_some_stuff(self):

        params = {'test1': 'pass',
                  'test2': 'fail'}

        for k, v in params.items():
            current_row_count = self.ui.main_queue_tableWidget.rowCount()
            self.ui.main_queue_tableWidget.insertRow(current_row_count)
            self.ui.main_queue_tableWidget.setItem(current_row_count, 0, QtWidgets.QTableWidgetItem(str(k)))
            self.ui.main_queue_tableWidget.setItem(current_row_count, 1, QtWidgets.QTableWidgetItem(str(v)))

if __name__ == '__main__':
    app = QApplication(sys.argv)
    app.processEvents()

    window = MainWindow()
    window.show()

    app.exec_()
import sys
from PyQt5.QtWidgets import *
from mainwindow import *

class MyTable(QtWidgets.QTableWidget):

    def keyPressEvent(self, event):
        if event.key() == QtCore.Qt.Key_Delete:
            row = self.currentRow()
            self.removeRow(row)
        else:
            super().keyPressEvent(event)

class MainWindow(QMainWindow):
    def __init__(self):
        super().__init__()

        # Initialise the UI object
        self.ui = Ui_MainWindow()
        self.ui.setupUi(self)

        #.... some signals here ...

    def do_some_stuff(self):

        params = {'test1': 'pass',
                  'test2': 'fail'}

        for k, v in params.items():
            current_row_count = self.ui.main_queue_tableWidget.rowCount()
            self.ui.main_queue_tableWidget.insertRow(current_row_count)
            self.ui.main_queue_tableWidget.setItem(current_row_count, 0, QtWidgets.QTableWidgetItem(str(k)))
            self.ui.main_queue_tableWidget.setItem(current_row_count, 1, QtWidgets.QTableWidgetItem(str(v)))

if __name__ == '__main__':
    app = QApplication(sys.argv)
    app.processEvents()

    window = MainWindow()
    window.show()

    app.exec_()