-
Notifications
You must be signed in to change notification settings - Fork 115
Open
Description
SiTableView中的.deleteRow(index: int)方法出现RuntimeError错误
当我调用由SiTableView构建的表格中的.deleteRow()方法来删除表格中第index行时会出现以下错误:
Traceback (most recent call last):
File "c:\Users\Admin\AppData\Local\Programs\Python\Python312\Lib\site-packages\siui\components\widgets\table.py", line 119, in resizeEvent
self.container().arrangeWidgets()
File "c:\Users\Admin\AppData\Local\Programs\Python\Python312\Lib\site-packages\siui\components\widgets\container.py", line 839, in arrangeWidgets
used_height[column_index] += widget.height() + self.spacing[1]
^^^^^^^^^^^^^^^
RuntimeError: wrapped C/C++ object of type SiRow has been deleted
出现了已经删除了控件但是还有函数在调用.arrangeWidgets()来访问控件而引起的RuntimeError错误,目前看上去是因为库中SiTableView并没有重写.deleteRow()方法导致使用时直接调用了SiTableView继承的ABCSiTable中的.deleteRow():
def deleteRow(self, index):
deleted_row = self.rows_.pop(index)
deleted_row.deleteLater()
self.rowDeleted.emit(index)
这导致了其它函数还在调用self.row_中的控件,.deleteRow()就直接给控件给删除了。
以下是我出现错误的部分代码
self.questionnaire_table = SiTableView(self)
self.questionnaire_table.resize(768, 400)
self.questionnaire_table.addColumn("", 100, 40, Qt.AlignmentFlag.AlignLeft | Qt.AlignmentFlag.AlignVCenter) # 复选框按钮列
self.questionnaire_table.addColumn("性别", 64, 40, Qt.AlignmentFlag.AlignHCenter | Qt.AlignmentFlag.AlignVCenter)
self.questionnaire_table.addColumn("年龄", 64, 40, Qt.AlignmentFlag.AlignHCenter | Qt.AlignmentFlag.AlignVCenter)
self.questionnaire_table.addColumn("大学", 148, 40, Qt.AlignmentFlag.AlignHCenter | Qt.AlignmentFlag.AlignVCenter)
self.questionnaire_table.addColumn("年级", 64, 40, Qt.AlignmentFlag.AlignHCenter | Qt.AlignmentFlag.AlignVCenter)
self.questionnaire_table.addColumn("民族", 64, 40, Qt.AlignmentFlag.AlignHCenter | Qt.AlignmentFlag.AlignVCenter)
self.questionnaire_table.addColumn("", 98, 40, Qt.AlignmentFlag.AlignRight | Qt.AlignmentFlag.AlignVCenter) # 编辑按钮列
self.questionnaire_table.addRow(data=["", "男", "20", "清华大学", "大一", "汉族", ""])
self.questionnaire_table.addRow(data=["", "男", "20", "清华大学", "大一", "汉族", ""])
self.questionnaire_table.deleteRow(0)
Metadata
Metadata
Assignees
Labels
No labels