如何在PyQT的tableWidget中添加一行?
我现在正在做一个小工具,这个工具是用Qt Designer设计的。我在用PyQT往Qtable里添加一行的时候遇到了麻烦,特别是语法和整体概念方面。我还没找到可以动态添加行的方法。如果有任何建议,我会很感激。
谢谢
4 个回答
1
你可以使用这个函数
def table_appender(widget, *args):
def set_columns(len, pos):
if pos == len-1:
widget.setItem(widget.rowCount()-1, pos, QTableWidgetItem(args[pos]))
else:
widget.setItem(widget.rowCount()-1, pos, QTableWidgetItem(args[pos]))
set_columns(len, pos+1)
widget.insertRow(widget.rowCount())
set_columns(widget.columnCount(), 0)
2
我发现这有点奇怪。要插入一行,你需要按照类似下面的方式操作:
tableWidget = QTableWidget()
currentRowCount = tableWidget.rowCount() #necessary even when there are no rows in the table
tableWidget.insertRow(currentRowCount, 0, QTableWidgetItem("Some text"))
为了更清楚地解释最后一行代码,insertRow()
的第一个参数是当前行,第二个参数是当前列(记住,索引是从0开始的),而第三个参数几乎总是需要是QTableWidgetItem
类型的)。
3
def add_guest(self):
rowPosition = self.tableWidget.rowCount()
self.tableWidget.insertRow(rowPosition)
guest_name = self.lineEdit.text()
guest_email = self.lineEdit_2.text()
numcols = self.tableWidget.columnCount()
numrows = self.tableWidget.rowCount()
self.tableWidget.setRowCount(numrows)
self.tableWidget.setColumnCount(numcols)
self.tableWidget.setItem(numrows -1,0,QtGui.QTableWidgetItem(guest_name))
self.tableWidget.setItem(numrows -1,1,QtGui.QTableWidgetItem(guest_email))
print "guest added"
这是我为我的活动组织应用程序完成的方式。
63
你可以先添加一个空行,然后再填充所有的列。下面是如何在所有其他行下面插入一行的步骤:
rowPosition = self.table.rowCount()
table.insertRow(rowPosition)
这样你就有了一行空行,可以像这样填充它,比如说如果你有3列的话:
table.setItem(rowPosition , 0, QtGui.QTableWidgetItem("text1"))
table.setItem(rowPosition , 1, QtGui.QTableWidgetItem("text2"))
table.setItem(rowPosition , 2, QtGui.QTableWidgetItem("text3"))
你也可以在其他位置插入行(不一定要在表格的最后面)。