我正在尝试从放置在tablewidget中的组合框中连接信号(currentIndexChanged)。但是,我似乎没有获得有关tablewidget中哪个comboxbox已更改的正确信息。
这是我当前的实现(为简单起见,已简化):
def SetupTable(self):
for k in range (0,2):
self.tableWidget.insertRow(k)
comboBox = QtWidgets.QComboBox()
self.tableWidget.setCellWidget(k,1,comboBox)
def UpdateTable(self):
for i in range (0,self.tableWidget.rowCount()):
comboBox = QtWidgets.QComboBox()
for item in Tcmp.GetObject():
comboBox.addItem(item.GetName())
print('Combobox Row:{}'.format(i))
comboBox.currentIndexChanged.connect(lambda : self.handleTableCombo(i))
self.tableWidget.setCellWidget(i,1,comboBox)
def handleTableCombo(self,row):
print('Hello')
print(row)
我首先使用SetupTable(),因为此时Tcmp.GetObject还没有准备好。然后,我稍后调用UpdateTable()以将表更新为Object。
问题在于handleTableCombo()不能提供任何有关更改(用户)组合框的信息
这是UpdateTable的打印输出:
Combobox Row:0
Combobox Row:1
从handleTableCombo打印输出,无论更改了哪个组合框和选择了哪个项目:
Hello
1
此外,如果有人对每次调用updateTable时如何避免创建新的组合框有一些提示,我将不胜感激。我尝试过:
#comboBox = self.tableWidget.cellWidget(i, 1)
但是.cellWidget似乎不了解它是一个组合框。
这是PyQt5。
谢谢。