将值附加到现有行
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)))
【讨论】:
感谢您的回答,但还是不行。目前,我有你解决的问题,我尝试打印我在哪一行,现在很好。但是我的数据仍然没有显示。我试图覆盖另一行来测试它,它删除了里面的数据但它没有写任何东西。 好的,现在它正在工作我不知道为什么......我想我只是忘记了一些东西以上是关于将值附加到现有行的主要内容,如果未能解决你的问题,请参考以下文章