Python 在UI文件中创建的QTableWidget的PyQt子类化函数
我正在寻找有关如何对在QT Designer/Creator中创建的QTableWidget进行子类化以执行其他任务(如在按键时删除表行)的信息(或确认,如果不可能) 我已将UI文件转换为python(mainwindow.py),并在脚本示例的顶部导入该文件。然后,我使用以下命令初始化UI对象: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
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_()