【问题标题】:How to append a row in a table widget PySide如何在表格小部件 PySide 中追加一行
【发布时间】:2018-03-08 09:19:03
【问题描述】:

我有一个 PySide QTableWidget,我通过运行一个函数用 QListWidget 中的项目填充这个表:

def fillTable(self):
    fruits = self.listWidget.selectedItems() # ['Apple', 'Banana', 'Coconut']
    self.tableWidget.setRowCount(len(fruits))
    n = 0
    for i in fruits:
        item = QTableWidgetItem()
        self.tableWidget.setItem(n, 0, item) 
        item.setText(i)
        n = n + 1

使用 QListWidget 中的其他项目再次运行此函数替换表中的项目。如何将新项目附加到现有项目?

【问题讨论】:

    标签: python pyqt pyside qtablewidget qtablewidgetitem


    【解决方案1】:

    要添加新元素,您必须增加行数并使用新位置。为此,您必须获取插入前的行数才能使用函数rowCount(),如下所示:

    def fillTable(self):
        fruits = self.listWidget.selectedItems() # ['Apple', 'Banana', 'Coconut']
        n = self.tableWidget.rowCount()
        self.tableWidget.setRowCount(n + len(fruits))
        for i in fruits:
            item = QTableWidgetItem()
            self.tableWidget.setItem(n, 0, item) 
            item.setText(i)
            n = n + 1
    

    【讨论】:

    • 谢谢,伙计,这行得通!另一个问题:我需要一个新函数,它将从此表中删除选定的行。
    • removeRow()。即self.tableWidget.removeRow(row)
    • 以及如何获取选定的行(行)?
    • 使用这个:rows = [self.listWidget.row(item) for item in self.listWidget.selectedItems()] [self.tableWidget.removeRow(row) for row sorted(rows, reverse=True)]
    • 谢谢!那行得通:rows = [self.tableWidget.row(item) for item in self.tableWidget.selectedItems()] [self.tableWidget.removeRow(row) for row in sorted(rows, reverse=True)]
    猜你喜欢
    • 1970-01-01
    • 2013-03-08
    • 1970-01-01
    • 1970-01-01
    • 2014-02-08
    • 1970-01-01
    • 2015-07-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多