【问题标题】:Getting Image from MySQL into tableWidget in PyQt5将图像从 MySQL 获取到 PyQt5 中的 tableWidget
【发布时间】:2020-09-24 11:31:26
【问题描述】:

我已经能够从数据库中获取数据并填充到 tableWidget 中,但是没有显示图像列。我尝试了我在网上找到的代码,但它仍然不起作用。数据库中的图像列具有 BLOB 数据类型。请协助更正我的以下代码。或者您可能想建议和推荐 tableWidget 以外的其他方法

 def getPersData(self):
    con = MySQLdb.connect(host="localhost", user="root", password="", database="db")
    with con:
        cur = con.cursor()
        query = cur.execute("SELECT * FROM persons")

        rows = cur.fetchall()

    for row_number, row_data in enumerate(rows):
        self.ui.tableWidget.insertRow(row_number)
        for column_number, column_data in enumerate(row_data):
            if column_number == 1:
                item = self.getImg(column_data)
                self.ui.tableWidget.setCellWidget(row_number, column_number, item)
            else:
                self.ui.tableWidget.setItem(row_number, column_number, QTableWidgetItem(str(column_data)))
    self.ui.tableWidget.verticalHeader().setDefaultSectionSize(100)
    self.ui.tableWidget.show()


def getImg(self, img):
    img_label = self.ui.label
    img_label.setText("")
    img_label.setScaledContents(True)
    pixmap = QPixmap()
    pixmap.loadFromData(img, "PNG")
    img_label.setPixmap(pixmap)
    return img_label

【问题讨论】:

    标签: mysql python-3.x pyqt5 qtablewidget


    【解决方案1】:

    使用字节的逻辑(在my previous answer中我建议使用base64,所以我在这种情况下也使用它)构建一个可以转换为可以在QTableWidget中显示的QIcon的QPixmap:

    for row_number, row_data in enumerate(rows):
        self.ui.tableWidget.insertRow(row_number)
        for column_number, column_data in enumerate(row_data):
            it = QTableWidgetItem()
            if column_number == 1:
                pixmap = QPixmap()
                pixmap.loadFromData(QByteArray.fromBase64(row_data))
                icon = QIcon(pixmap)
                it.setIcon(icon)
            else:
                it.setText(row_data)
            self.ui.tableWidget.setItem(row_number, column_number, it)
    

    【讨论】:

      猜你喜欢
      • 2021-05-31
      • 2021-01-11
      • 2012-09-03
      • 1970-01-01
      • 2016-12-05
      • 2013-03-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多