PyQt5:使用insertRow()后命名行时出现问题

2024-09-24 06:24:00 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图创建一个按钮,将一行添加到一个表中(QtTableWidget),并使用一个对话框来请求名称,我遇到了一个大问题(似乎是PyQt中的一个缺陷)。你知道吗

通过使用insertRow()函数添加行,行标题的值自动为none,这意味着您不能在行标题上使用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)

有什么办法可以绕过这个问题或者我不知道的方法吗?你知道吗


Tags: textnameselfnone标题defok按钮
1条回答
网友
1楼 · 发布于 2024-09-24 06:24:00

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

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

相关问题 更多 >