Python PyQt5 - 向表中添加行

Posted

技术标签:

【中文标题】Python PyQt5 - 向表中添加行【英文标题】:Python PyQt5 - Add rows to table 【发布时间】:2018-04-28 17:45:19 【问题描述】:

我创建了一个名为 tableWidget_Events 的包含 2 列和 0 行的表。

按钮的表格和网格如下所示:

使用旋转框中的值,我想将按钮文本作为一行插入,因此如果旋转框 = 1 并且我单击 walk,则应该在第一列中创建一行并在第二列中使用 1 .

这是我必须连接按钮的代码:

    self.pushButton_SO.clicked.connect(self.add_table)
    self.pushButton_Walk.clicked.connect(self.add_table)
    self.pushButton_GB.clicked.connect(self.add_table)
    self.pushButton_FB.clicked.connect(self.add_table)
    self.pushButton_PU.clicked.connect(self.add_table)

然后是添加行的函数:

def add_table(self):
    button = self.sender() # get button text
    row = self.spinBox_AB_TBL.value() #get value from spinbox

    rowPosition = self.tableWidget_Events.rowCount()
    self.tableWidget_Events.insertRow(rowPosition) #insert new row
    
    self.tableWidget_Events.setItem(row, 0, QtGui.QTableWidgetItem(self.spinBox_AB_TBL.value()))
    self.tableWidget_Events.setItem(row, 1, QtGui.QTableWidgetItem(button.text()))

按钮已连接。我可以将按钮文本打印到控制台,每次单击按钮都会添加一个新行。插入文本是我最感兴趣的。

谢谢。

【问题讨论】:

【参考方案1】:

QTableWidgetItem 不能接收整数作为数据,您必须将其转换为字符串,在您的情况下,QSpinBoxvalue() 方法返回一个整数,这会导致问题。

另外,如果你想插入,你必须指出适当的位置,在你的情况下它应该是rowPosition-1而不是row

def add_table(self):
    button = self.sender() # get button text
    row = self.spinBox_AB_TBL.value() #get value from spinbox

    rowPosition = self.tableWidget_Events.rowCount()
    self.tableWidget_Events.insertRow(rowPosition) #insert new row

    self.tableWidget_Events.setItem(rowPosition-1, 0, QtGui.QTableWidgetItem(str(row)))
    self.tableWidget_Events.setItem(rowPosition-1, 1, QtGui.QTableWidgetItem(button.text()))

【讨论】:

以上是关于Python PyQt5 - 向表中添加行的主要内容,如果未能解决你的问题,请参考以下文章

使用 vue.js 动态向表中添加行

如何在 React Hooks 中向表中添加行而不重复?

如何在SQL中向表中添加“X”行?

使用 JavaScript 向表中添加新行时重置输入字段

Jquery - 向表中添加新行(IE 友好版本)

从数据库 Django 向表中添加删除原始按钮