将值附加到现有行

Posted

技术标签:

【中文标题】将值附加到现有行【英文标题】:Append value into an existing row 【发布时间】:2021-07-16 15:09:07 【问题描述】:

我正在尝试创建一个视频播放器,我希望能够将 mediaPlayer.position() 的数据保存在 QTableWidget 中。 视频播放程序:

但是,我卡住了。我尝试在空行中插入值,但没有显示任何内容。

        def addSub(self):
        row = self.table.rowCount()
        self.table.insertRow(row)

这就是我创建新行的方式。 我希望当我按下“Ctrl+F”或“Ctrl+T”(预先设置)之类的快捷方式时,数据会像这样进入这个空行

    def startHere(self):
        newStart = self.mediaPlayer.position()
        row = self.table.rowCount()
        self.table.setItem(row, 0, QTableWidgetItem(str(newStart)))
    
    def endHere(self):
        newEnd = self.mediaPlayer.position()
        row = self.table.rowCount()
        self.table.setItem(row, 1, QTableWidgetItem(str(newEnd)))

【问题讨论】:

您实际上并不需要addSub 方法。只需在startHere 中执行insertRow,然后在endHere 中执行rowCount() - 1 我需要 'addSub' 方法,我想在表格的最后一个单元格中写入。 【参考方案1】:

您正在尝试为不存在的行设置项目。

假设你有一个空表,你运行addSub然后startHere

    def addSub(self):
        row = self.table.rowCount()
        # row is 0
        self.table.insertRow(row)
        # inserts a row at index 0, as indexes are always 0-based

    def startHere(self):
        newStart = self.mediaPlayer.position()
        row = self.table.rowCount()
        # you just created a row, so the line above returns 1
        self.table.setItem(row, 0, QTableWidgetItem(str(newStart)))
        # row 1 does not exist, so setItem is ignored

解决方法是在setItem上使用前减1:

    def startHere(self):
        newStart = self.mediaPlayer.position()
        row = self.table.rowCount() - 1
                                   ^^^^
        self.table.setItem(row, 0, QTableWidgetItem(str(newStart)))

【讨论】:

感谢您的回答,但还是不行。目前,我有你解决的问题,我尝试打印我在哪一行,现在很好。但是我的数据仍然没有显示。我试图覆盖另一行来测试它,它删除了里面的数据但它没有写任何东西。 好的,现在它正在工作我不知道为什么......我想我只是忘记了一些东西

以上是关于将值附加到现有行的主要内容,如果未能解决你的问题,请参考以下文章

以角度将行附加到现有数据列表

将值附加到字典中的一个列表 将值附加到字典中的所有列表

Python:根据更新的值将值附加到现有电子表格

是否可以附加到现有文件的第一行?

Swift 将值添加到现有用户默认值

无法将列表附加到现有文件。 C#