PyQt5:使用insertRow()后命名行的问题

时间:2015-08-11 13:09:17

标签: python pyqt pyqt5

我正在尝试创建一个向表添加行的按钮(QtTableWidget)并使用对话框询问名称,我遇到了一个大问题(看似PyQt中存在缺陷)。

通过使用insertRow()函数添加一行,行标题自动具有none值,这意味着您不能在行Header上使用verticalHeaderItem(rowPosition).setText(...),因为它无法设置值为none的项目的文本。

相关代码在这里:

def RenameRow(self, i, name):
    self.tab1table.verticalHeaderItem(i).setText(name)


def DatabaseAddRow(self):
    text, ok = QInputDialog.getText(self, "Row Entry", 'Please Enter A Row Name:', QLineEdit.Normal, 'e.g. ECN 776')
    if ok and text != '':
        rowPosition = self.tab1table.rowCount()
        self.tab1table.insertRow(rowPosition)
        self.RenameRow(rowPosition, text)

任何想法如何绕过这个或者我不知道的方法?

1 个答案:

答案 0 :(得分:0)

所以我在这个问题上浪费了半天之后就问了这个问题后我自己解决了这个问题,就像生活一样。该问题的解决方案是将一个空项分配给标题,然后重命名它,实现在这里:

def RenameRow(self, i, name, table):
    item = QTableWidgetItem()
    table.setVerticalHeaderItem(i, item)
    item = table.verticalHeaderItem(i)
    item.setText(QCoreApplication.translate("MainWindow", name))