使用Python将sqlite3数据库中的图像显示到QTableWidget中的列中

使用Python将sqlite3数据库中的图像显示到QTableWidget中的列中,python,sqlite,pyqt5,Python,Sqlite,Pyqt5,在查看了这里和其他地方的各种示例之后,我无法在“mydb.db”中显示图像,这是我的SQlite3数据库,在python中是我的表QTableWidget。这是我的密码 def fetch_all_learner_data(self): connection= sqlite3.connect("mydb.db") query = "SELECT NAME,ADM,CLASS,STREAM,CATEGORY,GENDER,COUNTY,PARENT,PARENT_CONTACT,P

在查看了这里和其他地方的各种示例之后,我无法在“mydb.db”中显示图像,这是我的SQlite3数据库,在python中是我的表QTableWidget。这是我的密码

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的image列上的内容,这也确实减慢了我的系统


如何解决此问题?

您必须使用QPixmap基于数据构建QIcon:

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()