从更改qtablewidget获取更改的组合框

时间:2019-03-12 08:54:23

标签: python-3.x pyqt

我正在尝试从放置在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。

谢谢。

0 个答案:

没有答案