我有数据库包含名为(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 ()
您正在尝试使用loadFromData()
作为静态函数加载像素图,但事实并非如此。另外,该函数返回loadFromData()
,报告加载是否成功。
您必须先创建一个新的QPixmap实例,然后加载数据,如果已加载,最后在标签中显示它:
bool
PS:避免在括号周围使用空格字符,这是不必要的并且分散注意力;另外,不要混淆和混合基类上的调用,在python3中,只需调用一次 pix = QPixmap()
if pix.loadFromData(data[0]):
self.label.setPixmap(pix)
就足够了,即使对于多个继承类]]