PyQt5学习:QLabel 标签控件两种 自适应缩放显示图片 方法比较

目录

1.测试代码

2.运行结果与代码分析

1.测试代码(注意py文件命名)

   1.1Qtdesigner设计的uipy文件 zoomimage_test.py (请注意这个文件一定要命名为zoomimage_test.py,要不然后面调用时会出错,如果能注意修改调用文件当我没说。。。)

# -*- coding: utf-8 -*-

# Form implementation generated from reading ui file 'zoomimage_test.ui'
#
# Created by: PyQt5 UI code generator 5.13.0
#
# WARNING! All changes made in this file will be lost!


from PyQt5 import QtCore, QtGui, QtWidgets


class Ui_Form(object):
    def setupUi(self, Form):
        Form.setObjectName("Form")
        Form.resize(320, 240)
        self.label = QtWidgets.QLabel(Form)
        self.label.setGeometry(QtCore.QRect(30, 40, 154, 102))
        self.label.setStyleSheet("background-color: rgb(232, 232, 232);")
        self.label.setText("")
        self.label.setObjectName("label")
        self.pushButton = QtWidgets.QPushButton(Form)
        self.pushButton.setGeometry(QtCore.QRect(60, 170, 81, 17))
        self.pushButton.setObjectName("pushButton")

        self.retranslateUi(Form)
        QtCore.QMetaObject.connectSlotsByName(Form)

    def retranslateUi(self, Form):
        _translate = QtCore.QCoreApplication.translate
        Form.setWindowTitle(_translate("Form", "Form"))
        self.pushButton.setText(_translate("Form", "添加缩放图片"))

   1.2调用文件:zoomimage_test.call.py(这个文件可以随便命名)

但有的地方要改一下,要把那个图片地址改成你要测试的图片地址(要注意图片地址书写格式问题,因为python默认 ‘\’ 在字符串中是转义字符,可以把 ‘\’ 改成 ‘/’ ‘\\’

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# author:mgboy time:2020/6/25
import sys
from PyQt5 import QtCore,QtGui
from PyQt5.QtWidgets import QApplication, QWidget

from zoomimage_test import Ui_Form


class Myfolder(QWidget, Ui_Form):
    def __init__(self, parent=None):
        super(Myfolder, self).__init__(parent)
        self.setupUi(self)
        self.pushButton.clicked.connect(self.button_1)

    def button_1(self):
        print('点击pushbutton')
        #方法1:完美显示图片,并自适应大小
        pix = QtGui.QPixmap("D:/PixivWallpaper/catavento.png")
        self.label.setPixmap(pix)
        self.label.setStyleSheet("border: 2px solid blue")
        self.label.setScaledContents(True)
        #方法2:这个会使图片显示模糊
        #jpg = QtGui.QPixmap("D:/PixivWallpaper/catavento.png").scaled(self.label.width(), self.label.height())
        #self.label.setPixmap(jpg)



if __name__ == "__main__":
    QtCore.QCoreApplication.setAttribute(QtCore.Qt.AA_EnableHighDpiScaling)
    app = QApplication(sys.argv)
    myWin = Myfolder()
    myWin.show()
    sys.exit(app.exec_())

2.结果与代码分析

方法1:用setScaledContents方法适应填充图片(推荐)

点击运行 “添加缩放图片”按钮方法一结果如下:

(图1)

图一说明:窗口大小:320 ,240

                  标签大小:154 ,102

                  原始图像大小 :2560 ,1600

可以看出程序实现了在标签上自适应缩放显示图片。

#方法1代码
pix = QtGui.QPixmap("D:/PixivWallpaper/catavento.png")#注意修改Windows路径问题
self.label.setPixmap(pix)
self.label.setStyleSheet("border: 2px solid blue")
self.label.setScaledContents(True)

方法2:先用scaled缩小图片再显示,所以会使显示的图片模糊

(注意如果是在运行我的代码时把方法2的代码去掉注释符 # ,给方法1代码加上注释符 #,再运行方法2)

(图2)

#方法2:这个会使图片显示模糊
jpg = QtGui.QPixmap("D:/PixivWallpaper/catavento.png").scaled(self.label.width(), self.label.height())
self.label.setPixmap(jpg)

(图3 原始图片)

猜你喜欢

转载自blog.csdn.net/qq_38463737/article/details/106963217#comments_21586918
今日推荐