Python PyQt5 - 向表中添加行

时间:2018-04-28 17:45:19

标签: python pyqt5 qtablewidget

我有一个用2列和0行创建的表,名为tableWidget_Events。

这里的按钮表格和网格是什么样的: table snip

使用spinbox中的值,我想将按钮文本作为一行插入,因此如果spinbox = 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 个答案:

答案 0 :(得分:1)

QTableWidgetItem无法接收整数作为数据,您必须将其转换为字符串,在您的情况下,value() QSpinBox方法返回一个整数,这会导致问题。< / p>

此外,如果您想要插入,则必须指明适当的位置,在您的情况下,它应该是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()))