私は、ユーザーがAdd Casesというボタンを押すたびに、特定のセルにコンボボックスを動的に追加するはずのQTableWidgetを持っています。私は主要な部分が働いているが、私が持っている問題は、コンボボックスからテキストを取得しようとしている。次のコードでは、テスト用のダミー関数としてdef clearcases()という関数があります。私は行を追加するたびに前の行の参照が削除されることを理解しています。そのためアクセスできないため、すべてのコンボボックスオブジェクトを追跡するリストを作成しようとしました。QTableWidget動的行付きQComboBox
は、私は現在のコードでこのエラーを取得しています
エラー:
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たびの行からテキストを得るのですか追加されますか?
FYIでは、clearcases関数はClear Caseボタンに接続されているので、ボタンをクリックするたびに、最初の行(Case A)のLift0テキストをコンソールに出力します。
実行例:
https://drive.google.com/drive/folders/0BzcHlfStubD3cHpUTkttN3h4NDA?usp=sharing