当前位置: 代码迷 >> 综合 >> PyQt5学习:QLabel 标签控件两种 自适应缩放显示图片 方法比较
  详细解决方案

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

热度:94   发布时间:2023-12-21 03:10:46.0

目录

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, QtWidgetsclass 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.translateForm.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, QWidgetfrom zoomimage_test import Ui_Formclass 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 原始图片)

 

 

 

 

 

 

 

 

 

 

 

 

  相关解决方案