Не удается перебрать столбец для QTableWidget - PullRequest
2 голосов
/ 17 марта 2019

Мне нужна помощь, потому что эта проблема просто не имеет смысла ... Отступы выглядят немного странно, извините за это ...

self.myData = [["facebook-icon", "Facebook", str(self.mykeys[0][1]), "*" *len(self.passes[0])], ......

Получается только первый элемент в таблиценесмотря на то, что rowCount печатает число 3 ... вот что меня озадачивает ... хотелось бы, чтобы кто-нибудь попробовал этот код, я новичок в Python

    passAmount = len(self.myData)
    print("There are %x items in myData" % (passAmount))

    rowCount = self.tableWidget.rowCount()
    print("There are %x items in the table" % (rowCount))

    for row in range(0, rowCount):
        cellText = self.tableWidget.itemAt(row,0).text()

        if(cellText == "facebook-icon"):
            self.tableWidget.itemAt(row, 0).setText("")
            print(imagePaths[0])
            fb = QPixmap(imagePaths[0]).scaledToWidth(20)
            label = QLabel()

            label.setPixmap(fb)

            # label.setScaledContents(True)
            self.tableWidget.setCellWidget(row, 0, label)


        elif(cellText == "blogger-icon"):
            ...


    self.tableWidget.setFont(self.font)
    self.tableWidget.resizeColumnsToContents()
    self.tableWidget.resizeRowsToContents()
    self.tableWidget.doubleClicked.connect(self.on_table_click)



    # Show widget
    self.show()

Я что-то не так делаю ??

App example

1 Ответ

2 голосов
/ 17 марта 2019

Как я вижу, вы хотите получить элементы из первого столбца, но itemAt() не возвращает элемент с заданной строкой и столбцом, а в геометрическую позицию, вместо этого вам следует использовать метод item().Кроме того, мы можем уменьшить код, используя словарь:

dict_icons = {
    "facebook-icon": imagePaths[0],
    "blogger-icon": imagePaths[1]
}

for row in range(0, 3):
    item = self.tableWidget.item(row, 0)
    image_path =  dict_icons.get(item.text())
    if image_path is not None:
        item.setText("")
        pixmap = QPixmap(image_path).scaledToWidth(20)
        label = QLabel(pixmap=pixmap)
        self.tableWidget.setCellWidget(row, 0, label)
...