显示来自 sqlite 的 BLOB 数据 On Pyqt5 DESIGN

我有数据库包括名为(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....等)


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


拉风的咖菲猫
浏览 111回答 1
1回答

汪汪一只猫

您正在尝试使用 loadFromData() 作为静态函数来加载 pixmap,但事实并非如此。此外,该函数返回 一个 ,报告加载是否成功。bool您必须首先创建一个新的 QPixmap 实例,然后加载数据,如果已加载,则最后在标签中显示它:    pix = QPixmap()         if pix.loadFromData(data[0]):         self.label.setPixmap(pix)PS:避免在括号周围使用空格字符,它们是不必要的和分散注意力的;另外,不要混淆和混合基类上的调用,在python3中,调用super().__init__()一次就足够了,即使对于多个继承类也是如此。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python