繁体   English   中英

如何在tableWidget PyQT中添加一行?

[英]How to add a row in a tableWidget PyQT?

我目前正在开发一个在Qt Designer中设计的小部件。 我在尝试向PyQT中的Qtable添加行的语法/整体概念时遇到问题。 我还没有找到动态添加行的方法。 任何的意见都将会有帮助。

问候

您可以添加空行,然后填充所有列。 这是在所有其他行下插入行的方法:

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"))

您还可以在其他位置插入行(表格末尾不需要)

我发现它有点奇怪。 要插入行,您必须遵循与此类似的内容:

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类型。

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"         

这就是我为我的活动组织应用程序完成的工作

您可以使用此功能

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)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM