关于PyQT5的QLabel不显示图片的问题

图片数据是我自己编写的Django服务器上以Base64编码的图片,在本地接收后解码为图片显示在QLabel中。

服务器代码:

def query_userinfo(request):
    name = request.POST.get('name')
    name_check = charge.objects.get(name = name)
    dest = base64.b64encode(name_check.img)
    returnData = {
                    'code':'0',
                    'msg':'success',
                    'name':name,
                    'mobile':name_check.phonenum,
                    'iccard':name_check.icnum,
                    'pic':dest.decode('utf-8')
                }
return HttpResponse(json.dumps(returnData), content_type="application/json")

本地一开始的代码,这个代码无法再QLabel中显示图片:

    def query_userinfo(self):
        postData = {
            'name':self.lineEdit_3.text()
        }
        r = requests.post("http://127.0.0.1:8000/app01/queryuserinfo/", data=postData)
        json_data = json.loads(r.text)
        self.mobile_show.setText(json_data.get('mobile'))
        self.precard_show.setText(json_data.get('iccard'))
        pic_data = json_data.get('pic').encode('utf-8')
        pixmap = QPixmap(151,171)
        ba = QtCore.QByteArray.fromBase64(pic_data)
        pixmap.loadFromData(ba)
        self.pic_show.setPixmap(pixmap)
        return None

无法显示的原因就是QLabel的大小和我的图片不匹配,后来对QPixmap调用Scaled函数后依旧不行。

pixmap.scaled(151, 171, aspectRatioMode = Qt.IgnoreAspectRatio)

后来才发现添加

self.pic_show.setScaledContents(True)

这行代码后就可以正确显示。这个函数的意义就在于是否将缩放其内容以填充所有可用空间。当启用时,标签显示一个像素图,它将缩放像素图以填充可用空间。该属性的默认值是False。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值