PyQt5设置图片格式及动画

摘要:
1.缩放图片“”。使用QImage。Scale(width,height)方法设置PyQt5中的图片“”。QtCreimport*来自PyQt5.QtGuidimport*来自PyQt5.Qt Widgetsimport*importssysclassscaleimage(QWidget):def__init__(self):super(scaleimage,self)。__意大利
1、缩放图片
'''
使用QImage.Scale(width,height)方法可以来设置图片
'''
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
import sys

class scaleimage(QWidget):
def __init__(self):
super(scaleimage,self).__init__()
self.setWindowTitle("缩放图片大小")

filename="./image/0.jpg"
img=QImage(filename)
label=QLabel(self)
label.setFixedWidth(200)
label.setFixedHeight(200)

#第一种方式-手动设置图片的大小尺寸为label的宽度和高度
#忽略比例,平滑化处理
result=img.scaled(label.width(),label.height(),Qt.IgnoreAspectRatio,Qt.SmoothTransformation)
label.setPixmap(QPixmap.fromImage(result))

#第二种方式-设置自比例缩放大小
label2 = QLabel(self)
label2.setFixedWidth(200)
label2.setFixedHeight(200)
label2.setScaledContents(True) #设置自动比例缩放的方式
label2.setPixmap(QPixmap("./image/0.jpg")) # 设置图片显示形式

v=QVBoxLayout()
v.addWidget(label)
v.addWidget(label2)
self.setLayout(v)

if __name__=="__main__":
app=QApplication(sys.argv)
p=scaleimage()
p.show()
sys.exit(app.exec_())

PyQt5设置图片格式及动画第1张

2、装载GIF动画
'''
使用QMovie
'''
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
import sys

class loadgif(QWidget):
def __init__(self):
super(loadgif,self).__init__()
self.setWindowTitle("装载GIF动画")
self.setFixedSize(512,288)
#self.setWindowFlags(Qt.Dialog|Qt.CustomizeWindowHint) #隐藏标题栏,窗口样式

self.movie=QMovie("./image/load.gif") #加载本地动画文件GIF文件
self.label=QLabel(self)
self.label.setMovie(self.movie)
self.movie.start() #开启动画

if __name__=="__main__":
app=QApplication(sys.argv)
p=loadgif()
p.show()
sys.exit(app.exec_())

PyQt5设置图片格式及动画第2张

3、动画效果改变窗口的尺寸
'''
QPropertyAnimation对象
用来控制动态变化的对象
可以动态改变控件的尺寸
'''
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
import sys

class animwindow(QWidget):
def __init__(self):
super(animwindow,self).__init__()
self.setWindowTitle("动态效果改变窗口的尺寸")
self.OrigHeight=50
self.ChangeHeight=150
self.setGeometry(QRect(500,400,150,self.OrigHeight))
self.b1=QPushButton("展开",self)
self.b1.setGeometry(10,10,60,35)
self.b1.clicked.connect(self.change)

def change(self):
currentheight=self.height()
if self.OrigHeight==currentheight:
startheight=self.OrigHeight
endheight=self.ChangeHeight
self.b1.setText("收缩")
else:
startheight = self.ChangeHeight
endheight = self.OrigHeight
self.b1.setText("展开")

#利用QPropertyAnimation(self,b'geometry')来进行设置动态改变窗口的尺寸
self.animation=QPropertyAnimation(self,b'geometry')
self.animation.setDuration(500) #设置动态变化的时间间隔为0.5秒
self.animation.setStartValue(QRect(500,400,150,startheight))
self.animation.setEndValue(QRect(500,400,300,endheight))
self.animation.start() #开始动态变化

if __name__=="__main__":
app=QApplication(sys.argv)
p=animwindow()
p.show()
sys.exit(app.exec_())

PyQt5设置图片格式及动画第3张

4、实现不同移动速度移动窗口
'''
'''
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
import sys

app=QApplication(sys.argv)
window1=QMainWindow()
window1.show()
window2=QMainWindow()
window2.show()

animation1=QPropertyAnimation(window1,b'geometry')
animation2=QPropertyAnimation(window2,b'geometry')

#两个窗口动态并行的方式
#group=QParallelAnimationGroup()
#两个窗口动态串行方式
group=QSequentialAnimationGroup()
group.addAnimation(animation1)
group.addAnimation(animation2)

animation1.setDuration(3000) #设置动画的时间间隔为3秒
animation1.setStartValue(QRect(0,0,100,30))
animation1.setEndValue(QRect(250,250,100,30))
animation1.setEasingCurve(QEasingCurve.OutBounce) #设置动画变化的实际动态曲线效果形式

animation2.setDuration(4000)
animation2.setStartValue(QRect(250,250,100,30))
animation2.setEndValue(QRect(850,250,100,30))
animation2.setEasingCurve(QEasingCurve.CosineCurve) #设置动画的形式曲线

group.start()
sys.exit(app.exec_())
PyQt5设置图片格式及动画第4张


免责声明:文章转载自《PyQt5设置图片格式及动画》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇WM_PAINT产生原因有2种(用户操作和API)——WM_PAINT和WM_ERASEBKGND产生时的先后顺序不一定(四段讨论)Nginx 动静分离与负载均衡的实现下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

【学习笔记】tensorflow图片读取

目录 图像基本概念 图像基本操作图像基本操作API 图像读取API 狗图片读取 CIFAR-10二进制数据读取 TFRecords TFRecords存储 TFRecords读取方法 图像基本概念 在图像数字化表示当中,分为黑白和彩色两种。在数字化表示图片的时候,有三个因素。分别是图片的长、图片的宽、图片的颜色通道数。那么黑白图片的颜色...

prometheus-数据展示之grafana部署和数据源配置

1、监控pods 。   prometheus再部署以后,会自带cAdvisor。结果如下: 2、K8S集群状态监控。需要使用kube-state-metrics插件。部署以后 kubernetes.io/cluster-service: "true" 会自动启用监控对象,无需配置 [root@VM_0_48_centos prometheus]#...

Html的label和span的区别

从最终效果来看,label与span标签显示方式及作用都一样的但由于label中有for属性的存在,也有着决定性的不同 for属性将label和表单进行配对 label标签通常是写在表单(form)内的,他与一个普通的span最大的不同,就是可以和表单元素配对,比如文本框,单选框,复选框。而配对的方法,就是通过label的for属性。 比如 12 <...

ios 设置label的高度随着内容的变化而变化

好吧  步骤1:创建label _GeRenJianJie = [[UILabel alloc]init]; 步骤2:设置label _GeRenJianJie.textColor = RGBAColor(95, 104, 115, 1); _GeRenJianJie.numberOfLines = 0; // 需要把显示行数设置成无限制...

WPF DevExpress ChartControl使用之XYDiagram

WPF使用Dev和WinForm有许多不同,相对而言,WPF要更简单和炫酷一点,我只做了一点基本的功能,没有仔细的研究,这里只介绍一下WPF Dev ChartControl绘制XYDiagram的基础。 XYDiagramControl.xaml页面 <UserControl xmlns="http://schemas.micro...

el-table的多选框表头增加全选字样

实现效果: 实现方法: 在el-table-column中设置label属性并不会起作用,因此全选二字需要使用CSS来实现 .el-table__header .el-table-column--selection .cell .el-checkbox:after { color: #333; content: "全选"; font-size...