在label中添加pixmap来显示图片时,当图片过大时图片显示不全。

1.这时可以使用pixmap的scared()方法,来设置图片缩放。

QPixmap QPixmap.scaled (self, int w, int h, Qt.AspectRatioMode aspectMode = Qt.IgnoreAspectRatio, Qt.TransformationMode mode = Qt.FastTransformation)

Scales the pixmap to the given size, using the aspect ratio and transformation modes specified by aspectRatioMode and transformMode.

  • If aspectRatioMode is Qt.IgnoreAspectRatio, the pixmap is scaled to size.
  • If aspectRatioMode is Qt.KeepAspectRatio, the pixmap is scaled to a rectangle as large as possible inside size, preserving the aspect ratio.
  • If aspectRatioMode is Qt.KeepAspectRatioByExpanding, the pixmap is scaled to a rectangle as small as possible outside size, preserving the aspect ratio.

If the given size is empty, this function returns a null pixmap.

In some cases it can be more beneficial to draw the pixmap to a painter with a scale set rather than scaling the pixmap. This is the case when the painter is for instance based on OpenGL or when the scale factor changes rapidly.

2.可以使用QLabel.setScaledContents (self, bool)方法来使pixmap自适应label大小

测试代码:

#encoding:utf-8
'''
Created on 2016年7月10日

@author: Administrator
'''
from PyQt4.QtGui import *
from PyQt4.QtCore import *
import sys

class ImageFrame(QMainWindow):
def __init__(self):
super(ImageFrame, self).__init__()
self.initUI()

def initUI(self):
#窗体设置
self.setGeometry(100, 100, 500, 400)
self.setMaximumSize(500, 400)
self.setMinimumSize(500, 400)
self.setVisible(True)
self.statusBar()
image = QAction(QIcon('open.png'), 'open', self)
image.setShortcut('ctrl+o')
image.setStatusTip('open new image')
self.connect(image, SIGNAL('triggered()'), self.openImage)
toolbar = self.addToolBar('image')
toolbar.addAction(image)
label = QLabel()
label.setGeometry(0, 0, 400, 400)
self.setCentralWidget(label)
layout = QGridLayout()
self.label1 = QLabel()
self.label1.setGeometry(0, 0, 200, 200)
#设置label对齐方式
self.label1.setAlignment(Qt.AlignLeft)
button = QPushButton('edit')
edit = QLineEdit()
layout.addWidget(self.label1, 0, 0)
layout.addWidget(edit, 1, 0)
layout.addWidget(button, 1, 1)
label.setLayout(layout)

self.updataImage()

def openImage(self):
imageName = QFileDialog.getOpenFileName(self,"Open file dialog","/","jpg files(*.jpg)")
self.updataImage(imageName)

def updataImage(self, imageName = 'icon.png'):
pixmap = QPixmap(imageName)
'''图像缩放:使用pixmap的scare方法,参数aspectRatioMode=Qt.KeepAspectRatio设置为等比例缩放,
aspectRatioMode=Qt.IgnoreAspectRatio为不按比例缩放'''
scaredPixmap = pixmap.scaled(400, 400, aspectRatioMode=Qt.KeepAspectRatio)
#图像缩放:使用label的setScaledContents(True)方法,自适应label大小
#self.label1.setScaledContents(True)
print pixmap.height()
print pixmap.width()
self.label1.setPixmap(scaredPixmap)

pixmap和label设置图片自适应大小的更多相关文章

  1. css控制图片自适应大小

    相信大家做网页时经常会碰到大分辨率的图片会把表格涨破以致漂亮的网页面目全非,但只要使用以下的CSS语句即可解决.      该CSS的功能是:大于600的图片自动调整为600显示. <style ...

  2. iOS HTML 字符串中的图片 自适应大小

    本文原文地址:http://www.cnblogs.com/qianLL/p/6095988.html 有时候 我们接收数据的时候  后台给的数据室一串HTML 的字符串  但是 我们要显示出来  这 ...

  3. Android代码中动态设置图片的大小(自动缩放),位置

    项目中需要用到在代码中动态调整图片的位置和设置图片大小,能自动缩放图片,用ImageView控件,具体做法如下: 1.布局文件 <RelativeLayout xmlns:android=&qu ...

  4. Android drawableleft drawableTop 设置图片的大小

    例子: Drawable drawable=getResources().getDrawable(R.drawable.xx); //获取图片 drawable.setBounds(left, top ...

  5. 设置图片自适应DIV大小

    可以利用CSS样式表中表示后代的复合选择器进行设置.例: <head> <style type="text/css"> #right img /*设定box ...

  6. android设置图片自适应控件大小

    在XML文件的ImageView属性中加上:android:scaleType="fitXY"

  7. word 2013 粘贴的图片自适应大小

    1.先切换到页面视图 2.粘贴图片进去,成功自适应,像素不变,可右键图片另存为图片,查看原始图片,或者ctrl+滚轮上放大. 3.在其他视图就会出现超出范围的情况,还要自己调整

  8. 纯js实现div内图片自适应大小

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  9. Winfrom PictureBox 设置图片自适应

    初始状态 Bitmap bm = new Bitmap(Image.FromStream(System.Net.WebRequest.Create(new Uri(result.Result)).Ge ...

随机推荐

  1. IE6条件下的bug与常见的bug及其解决方法

    1.IE6条件下有双倍的margin 解决办法:给这个浮动元素增加display:inline属性 2. 图片底部有3像素问题 解决办法:display:block;或者vertical-align: ...

  2. 2018 OO第一次总结(作业1-3)

    第一次作业1.程序分析 (1)OO度量 (2)类图: (3)分析与评价: 这次作业由于作业整体设计难度不大,因此按照去年暑假上的OO先导课老师讲的设计方法很容易实现一个还不错的面向对象式程序,类与类之 ...

  3. linux <<eof

    在平时的运维工作中,我们经常会碰到这样一个场景:执行脚本的时候,需要往一个文件里自动输入N行内容.如果是少数的几行内容,还可以用echo追加方式,但如果是很多行,那么单纯用echo追加的方式就显得愚蠢 ...

  4. android: LayoutInflater使用

    1. 题外话 相信大家对LayoutInflate都不陌生,特别在ListView的Adapter的getView方法中基本都会出现,使用inflate方法去加载一个布局,用于ListView的每个I ...

  5. [CGAL]带岛多边形三角化

    CGAL带岛多边形三角化,并输出(*.ply)格式的模型 模型输出的关键是节点和索引 #include <CGAL/Triangulation_vertex_base_with_id_2.h&g ...

  6. 如何将Revit明细表导出为Excel文档

    Revit软件没有将明细表直接导出为Excel电子表格的功能,Revit只能将明细表导出为TXT格式,但是这种TXT文件用EXCEL处理软件打开然后另存为XLS格式即可,以Revit2013版自带的建 ...

  7. Spark机器学习(9):FPGrowth算法

    关联规则挖掘最典型的例子是购物篮分析,通过分析可以知道哪些商品经常被一起购买,从而可以改进商品货架的布局. 1. 基本概念 首先,介绍一些基本概念. (1) 关联规则:用于表示数据内隐含的关联性,一般 ...

  8. V-rep学习笔记:机器人路径规划2

    路径规划问题是机器人学研究的一个重要领域,它是指给定操作环境以及起始和目标的位置姿态,要求选择一条从起始点到目标点的路径,使运动物体(移动机器人或机械臂)能安全.无碰撞地通过所有的障碍物而达到目标位置 ...

  9. redis性能测试报告

    服务器配置:16核心,64G 250个并发读:250个并发写性能[内容8千byte] 163为读:164为写:

  10. Golang select

    Golang下select的功能和Linux IO复用中的select, poll, epoll相似,是监听 channel 操作,当 channel 操作发生时,触发相应的动作. package m ...