如何在QTableWidget的仅一列中添加一行?

时间:2019-08-23 13:53:27

标签: python pyqt5 qtablewidget

我有一个包含两列的QTableWidget: “绝对链接”和“非绝对链接”。

我想根据链接的绝对值来添加链接列表中的每个链接。 我只想在相应的列中插入一行

是否有一种类似于.insertRow()的方法使我能够做到这一点?

这是我尝试过的方法,但它不断将我添加到所有列中。

for link in self.links_:
    numRows = self.HTMLLinksTableWidget.rowCount()
    self.HTMLLinksTableWidget.insertRow(numRows)
        if self.isAbsolute(link):
            self.HTMLLinksTableWidget.setItem(numRows, 1, QtWidgets.QTableWidgetItem(link))
        else:
            self.HTMLLinksTableWidget.setItem(numRows, 0, QtWidgets.QTableWidgetItem(link))

我也尝试过使用两个列表进行此操作,它不能完美运行,并且不能在列表中添加所有链接:

for AbsoluteLink in self.AbsoluteLinks:
        numRows = self.HTMLLinksTableWidget.rowCount()
        self.HTMLLinksTableWidget.insertRow(numRows)
        self.HTMLLinksTableWidget.setItem(numRows, 1, QtWidgets.QTableWidgetItem(AbsoluteLink))


for count, NonAbsoluteLink in enumerate(self.NonAbsoluteLinks):
    self.HTMLLinksTableWidget.setItem(count, 0, QtWidgets.QTableWidgetItem(NonAbsoluteLink))

1 个答案:

答案 0 :(得分:0)

使用第二种策略,您可以做类似的事情

self.AbsoluteLinks.setRowCount(max(len(self.AbsoluteLinks), len(self.NonAbsoluteLinks)))

for row, link in enumerate(self.AbsoluteLinks):
    self.HTMLLinksTableWidget.setItem(row, 0, QtWidgets.QTableWidgetItem(link))

for row, link in enumerate(self.NonAbsoluteLinks):
    self.HTMLLinksTableWidget.setItem(row, 1, QtWidgets.QTableWidgetItem(link))

(或者您可以将两个for循环组合在一起:)

self.AbsoluteLinks.setRowCount(max(len(self.AbsoluteLinks), len(self.NonAbsoluteLinks)))
for col, links in enumerate((self.AbsoluteLinks, self.NonAbsoluteLinks)):
    for row, link in enumerate(links):
        self.HTMLLinksTableWidget.setItem(row, col, QtWidgets.QTableWidgetItem(link))