Отображение изображений из базы данных sqlite3 в столбец QTableWidget с Python - PullRequest
1 голос
/ 29 мая 2020

Посмотрев различные примеры здесь и в других местах, я не смог показать изображения в mydb.db, которая является моей базой данных SQlite3, в моей таблице QTableWidget в python. Вот мой код

def fetch_all_learner_data(self):
    connection= sqlite3.connect("mydb.db")
    query = "SELECT NAME,ADM,CLASS,STREAM,CATEGORY,GENDER,COUNTY,PARENT,PARENT_CONTACT,PHOTO   FROM learner_data"
    result = connection.execute(query)
    self.classes_table.setRowCount(0)
    for row_number,row_data in enumerate(result):
        self.classes_table.insertRow(row_number)
        for column_number,data in enumerate(row_data):
            self.classes_table.setItem(row_number,column_number,QTableWidgetItem(str(data)))
    connection.commit()
    connection.close()

Это то, что в конечном итоге попадает в столбец изображений в qtable, и что также сильно замедлило мою систему.

What displays in the qtable

Как решить эту проблему?

1 Ответ

2 голосов
/ 29 мая 2020

Вы должны построить QIcon на основе данных с помощью QPixmap:

def fetch_all_learner_data(self):
    connection = sqlite3.connect("mydb.db")
    query = "SELECT NAME,ADM,CLASS,STREAM,CATEGORY,GENDER,COUNTY,PARENT,PARENT_CONTACT,PHOTO   FROM learner_data"
    result = connection.execute(query)
    self.classes_table.setRowCount(0)
    for row_number, row_data in enumerate(result):
        self.classes_table.insertRow(row_number)
        for column_number, data in enumerate(row_data):
            it = QTableWidgetItem()
            if column_number == 9:
                pixmap = QPixmap()
                pixmap.loadFromData(data)
                it.setIcon(QIcon(pixmap))
            else:
                it.setText(str(data))
            self.classes_table.setItem(row_number, column_number, it)
    connection.commit()
    connection.close()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...