简体   繁体   English

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

[英]Display images from sqlite3 database to a column in QTableWidget with Python

After looking at various examples here and elswhere, I have not been able to show images in 'mydb.db' which is my SQlite3 database to my table QTableWidget in python.在查看了此处和其他地方的各种示例后,我无法将“mydb.db”中的图像显示到 python 中的表 QTableWidget 中,这是我的 SQlite3 数据库。 Here is my code这是我的代码

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

This is what end up getting on the image column in the qtable and which have also really slowed my system.这最终会出现在 qtable 中的图像列上,这也确实减慢了我的系统。

qtable 中显示的内容

How can I solve this?我该如何解决这个问题?

You have to build a QIcon based on the data using a QPixmap:您必须使用 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()

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM