在Pyqt5 DESIGN上从sqlite显示BLOB数据

问题描述 投票:0回答:1

我有数据库包含名为(IMG)的BLOB列我需要的是通过代码搜索时显示的商品图片,但结果始终是这样的(caV \ xd6 \ xf7 \ xd0 \ xec] c \ x1b \ x95 \ xe2 \ xa4 \ x00 \ xe3 \ xd3 \ x82L \ xc9L \ xa2W8H \ xaf \ xe4 \ xe0 \ x9f \ xcb \ x7f \ xb5 \ xbautm] \ x94 \'\ xb6 \ xb7p \ xa7 {\ xbffU \ xb7Q \ xd5 \ x8d \ xe3 \ xe1 \ xb .... etc)

import io
import base64
from PyQt5 import QtGui
from ui import Ui_MainWindow
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
import ast
import sqlite3
import sys

class HmcProject ( QMainWindow, Ui_MainWindow ):  # ,FORM_CLASS
    def __init__(self):
        QMainWindow.__init__ ( self )
        super ( HmcProject, self ).__init__ ()
        self.setupUi ( self )
        self.Handle_Buttons ()
        self.Db_Connect ()
        self.Image_Retrive()


    def Db_Connect(self):
        self.connection = sqlite3.connect ( 'deals_db.db' )
        cursor = self.connection.cursor ()

    def Handle_Buttons(self):
        self.pushButton.clicked.connect(self.Image_Retrive)


    def Image_Retrive(self):
        try:

            cursor = self.connection.cursor ()
            itemsearch = self.lineEdit_Item_NameS_3.text ()

            sql = ('''
            SELECT IMG  FROM deals_data 
            WHERE ITEM_CODE= ?
            ''')

            cursor.execute ( sql,[(itemsearch)])
            data = cursor.fetchone ()
            print ( data [0])
            pix= QPixmap.loadFromData(data[0])
            self.label.setPixmap(pix)

        except:
            pass

def main():
    app = QApplication ( sys.argv )
    window = HmcProject ()
    window.show ()
    app.exec_ ()


if __name__ == '__main__':
    main ()


python sqlite pyqt5 blob qlabel
1个回答
0
投票

您正在尝试使用loadFromData()作为静态函数加载像素图,但事实并非如此。另外,该函数返回loadFromData(),报告加载是否成功。

您必须先创建一个新的QPixmap实例,然后加载数据,如果已加载,最后在标签中显示它:

bool

PS:避免在括号周围使用空格字符,这是不必要的并且分散注意力;另外,不要混淆和混合基类上的调用,在python3中,只需调用一次 pix = QPixmap() if pix.loadFromData(data[0]): self.label.setPixmap(pix) 就足够了,即使对于多个继承类]]

© www.soinside.com 2019 - 2024. All rights reserved.