【发布时间】:2018-02-15 04:33:56
【问题描述】:
我有一个我正在处理的 QTableWidget,当用户点击一个名为“添加案例”的按钮时,它应该在某些单元格上使用组合框动态添加行。我的主要部分工作正常,但我遇到的问题是试图从组合框中获取文本。在下面的代码中,我有一个名为 def clearcases() 的函数作为用于测试的虚拟函数。我知道每当我添加一行时,前面的行引用都会被删除,这就是我无法访问它们的原因,所以我尝试创建一个列表来跟踪所有组合框对象。
当前代码出现此错误
错误:
Traceback (most recent call last):
File "C:\Users\Desktop\VLS.py", line 3888 in clearcases
print(TotalLift[0].currentText()
RuntimeError: wrapped C/C++ object of type QComboBox has been deleted
TotalLift = []
LiftBox = {}
TotalReed = []
ReedBox = {}
def addcases(self):
row = self.tableWidget.rowCount()
self.tableWidget.insertRow(row)
for x in range(1, 33):
self.tableWidget.setVerticalHeaderItem(row, QTableWidgetItem('Case ' + chr(ord('A') + row)))
for i in range(0, 4):
LiftBox[i] = QtWidgets.QComboBox()
Lift = ['', 'N', 'M', 'H']
LiftBox[i].addItems(Lift)
TotalLift.append(LiftBox[i])
ReedBox[i] = QtWidgets.QComboBox()
Reed = ['', 'B', 'C', 'D', 'E', 'O', 'P']
ReedBox[i].addItems(Reed)
self.tableWidget.setCellWidget(row, 2, ReedBox[0])
self.tableWidget.setCellWidget(row, 3, LiftBox[0])
self.tableWidget.setCellWidget(row, 4, ReedBox[1])
self.tableWidget.setCellWidget(row, 5, LiftBox[1])
self.tableWidget.setCellWidget(row, 6, ReedBox[2])
self.tableWidget.setCellWidget(row, 7, LiftBox[2])
self.tableWidget.setCellWidget(row, 8, ReedBox[3])
self.tableWidget.setCellWidget(row, 9, LiftBox[3])
def clearcases(self):
print(TotalLift[0].currentText())
我的总体问题是,如何在添加行时从某些 QComboBoxes 中获取文本?
仅供参考,clearcases 功能已连接到 Clear Case 按钮,因此每当我单击该按钮时,我希望它能够将第一行 (Case A) Lift0 文本打印到控制台。
运行示例:
https://drive.google.com/drive/folders/0BzcHlfStubD3cHpUTkttN3h4NDA?usp=sharing
【问题讨论】:
标签: python python-3.x pyqt pyqt5 qtablewidget