最近在做项目的播放器部分,在实现播放器像网易云那样点击播放唱片就会自动转动时遇到了问题,经过一套搜索引擎组合拳,终于是实现了该功能,成品如下

闲话少说,上代码(代码部分做了大量的注释和个人理解,就不额外的解释了,因为我也是查大佬的案例过来的,所以理解仅供参考)

"""唱片"""
class Cp_Comp_1(QObject):def __init__(self):super(Cp_Comp_1, self).__init__()# 加载图片资源pixmap_1 = QPixmap('./img/main_UI/play/play_cp_comp1.png')# 按比例设置图片大小scaledPixmap_1 = pixmap_1.scaled(150,150)# 初始化动作self.animation()# 定义QGraphicsPixmapItemself.pixmap_item_1 = QGraphicsPixmapItem(scaledPixmap_1)# 设置item旋转的中心点self.pixmap_item_1.setTransformOriginPoint(75,75)   # 中心# 设置图片的初始位置self.pixmap_item_1.setPos(0,30)def _set_rotation(self,degree):self.pixmap_item_1.setRotation(degree)    # 自身改变角度def animation(self):# 创建唱片360°无死角转动self.anim = QPropertyAnimation(self, b'rotation')   # 动画类型('rotation':转动,'pos':位置移动)self.anim.setDuration(40000)     # 运行的秒速(经测试,网易云用户每播放40s的歌曲,世界上就会有一张无辜唱片被转动一周)self.anim.setStartValue(0)  # 起始角度self.anim.setEndValue(360)  # 结束角度self.anim.setLoopCount(-1)  # 设置循环次数rotation = pyqtProperty(int, fset=_set_rotation)    # 属性动画改变自身数值(传递信号??)"""把柄"""
class Cp_Comp_2(QObject):def __init__(self):super(Cp_Comp_2, self).__init__()# 加载图片资源pixmap_2 = QPixmap('./img/main_UI/play/play_cp_comp2.png')# 按比例设置图片大小scaledPixmap_2 = pixmap_2.scaled(85,50)# 初始化动作self.animation()# 定义QGraphicsPixmapItemself.pixmap_item_2 = QGraphicsPixmapItem(scaledPixmap_2)# 设置item旋转的中心点self.pixmap_item_2.setTransformOriginPoint(0,0) # 左上角# 设置图片的初始位置self.pixmap_item_2.setPos(70,-12)def _set_rotation(self,degree):self.pixmap_item_2.setRotation(degree)    # 自身改变角度def animation(self):# 转轴转动的动画之开和关self.anim_1 = QPropertyAnimation(self, b'rotation')self.anim_1.setStartValue(0)  # 起始角度self.anim_1.setEndValue(30)  # 结束角度self.anim_1.setLoopCount(1)  # 设置循环次数self.anim_2 = QPropertyAnimation(self, b'rotation')self.anim_2.setStartValue(30)  # 起始角度self.anim_2.setEndValue(0)  # 结束角度self.anim_2.setLoopCount(1)  # 设置循环次数rotation = pyqtProperty(int, fset=_set_rotation)    # 属性动画改变自身数值(传递信号??)
"""呈现动画的界面"""
"""因为QWeidget之类的是静态的,所以不能用来作为动画的呈现界面(是这样子理解的吧)"""
class View(QGraphicsView):def __init__(self):super(View, self).__init__()self.resize(180,220)self.setAttribute(Qt.WA_TranslucentBackground)  # 透明背景self.setWindowFlags(Qt.FramelessWindowHint) # 无边框self.setStyleSheet('background:cyan')self.initView()def initView(self):self.cp_comp_1 = Cp_Comp_1()self.cp_comp_2 = Cp_Comp_2()self.scene = QGraphicsScene(self)self.scene.setSceneRect(-10,0,170,210)    # 设置动画区域,在此区域内的控件会被动态刷新self.scene.addItem(self.cp_comp_1.pixmap_item_1)   # 往容器里面添加itemself.scene.addItem(self.cp_comp_2.pixmap_item_2)   # 往容器里面添加itemself.setScene(self.scene)       # 英文翻译:设置场景??btn_1 = QPushButton('播放',self)btn_1.setGeometry(10,178,40,40)btn_1.clicked.connect(self.start)btn_2 = QPushButton('暂停',self)btn_2.setGeometry(138,178,40,40)btn_2.clicked.connect(self.stop)def start(self):self.cp_comp_1.anim.start()self.cp_comp_2.anim_1.start()def stop(self):self.cp_comp_1.anim.pause()self.cp_comp_2.anim_2.start()app = QApplication(argv)
vi = View()
vi.show()
exit(app.exec_())

这里的动作演示仅是作为案例分享

项目进程:PyQt5初级实战项目-ABAB阅读器
参考文献:pyqt5 动画学习(四) 旋转动画

PyQt5之实现网易云播放唱片的动作(图片的旋转)相关推荐

  1. Qt:一个简洁漂亮的高仿网易云播放器

    Qt:一个简洁漂亮的高仿网易云播放器 界面动图展示: 功能简述: 1.音乐的播放.暂停 2.音乐的上.下一曲 3.进度条显示进度.滑动条调整进度 4.音量的滑动调整 5.列表切换歌曲 6.播放.暂停的 ...

  2. 自定义网易云播放页面

    首先我们先来看看最终的效果 现在我们来一步一步实现这个效果 首先我们先自定义VIew,把唱片背景图画上去,代码很简单 定义一个Bitmap变量,保存唱片图片,在初始化方法中获取唱片图片 //获取唱片图 ...

  3. 推荐一款高颜值的第三方网易云播放器,支持网页版和客户端

    简介 YesPlayMusic是一款基于网易云音乐官方平台开发的第三方播放器 其 UI界面非常漂亮,简洁的白色风格将全部内容简化 YesPlayMusic-高颜值的第三方网易云播放器,支持网页版和客户 ...

  4. 如何使用轻量应用服务器搭建高颜值的YesPlayMusic网易云播放器

    本文介绍了如何使用腾讯云的Lighthouse轻量应用服务器来搭建一个高颜值的第三方网易云播放器. ​ 项目简介 本文使用的是YesPlayMusic项目,这是一款高颜值的第三方网易云播放器,它完全可 ...

  5. 推荐一款高颜值网易云播放器

    之前老逛推荐过一个符合程序员气质的 GitHub 项目:网易云音乐命令行版本.这个项目基于 Python 编写,支持 Mac OS.Unix.Linux 系统,简洁优雅,丝般顺滑. 人家的网抑云 程序 ...

  6. Vue网易云播放器|Vue音乐播放附带环境部署视频教程

    本次项目是对前面的vue知识的综合应用:基于vue实现一个网页版播放器. 主页面 这是第二个页面是推荐音乐的模块 在这里我们可以查看歌单中的音乐 标题还可以自己查看mv 播放视频 自由的查看自己喜欢的 ...

  7. 如何搭建一个自己的音乐播放器-使用腾讯云轻量应用服务器搭建YesPlayMusic网易云播放器

    项目简介 本文使用的是YesPlayMusic项目,这是一款高颜值的第三方网易云播放器,它完全可以作为网易云官方应用的替代品.而且还拥有一些网易云官方应用没有的功能,比如可以自动签到,支持PWA可以直 ...

  8. 网易云播放失败,请在设置中切换输出设备 解决方案

    网易云播放音乐莫名报错:播放失败,请在设置中切换输出设备 如下: 2.在搜索框搜索控制面板,打开控制面板 找到控制面板的管理工具,点击 点击服务,进入 找到Windows Audio ,右键关闭→右键 ...

  9. 用Vue搭建一个网易云播放器(一)

    之前看了一个博主用vue搭建的网易云播放器,于是有了想法.最近没有什么项目,看书也看得无聊了,确确实实想来写点代码,那么就开始吧. 1.音乐资源 首先调研了一下一些开放的音乐API:豆瓣音乐.QQ音乐 ...

最新文章

  1. 业务逻辑实现方式选择
  2. easyui分页查询为什么会有下拉框_做网站优化为什么要分析百度下拉词和相关搜索?...
  3. 计算机图形与游戏技术,宾夕法尼亚大学计算机图形与游戏技术研究生Offer及录取要求...
  4. 云科技网络验证源码_面向虚拟化架构和容器云的开源安全工具
  5. java会被rust替代吗_Rust 未来会成为主流的编程语言吗?
  6. 页面图片中间有条线----解决
  7. 解决shell脚本参数传递含有空格的问题
  8. android 添加个人标签,android – 如何在标签标签上添加填充?
  9. python语言要多久_怎么自学python,大概要多久?
  10. eclipse各版本下载列表
  11. php各安装包中TS和NTS及SRC/VC6|VC9|VC11|VC14|VC15版本区别意思详解(转)
  12. MFC定时器SetTimer函数用法总结
  13. conan入门(六):conanfile.txt conanfile.py的区别
  14. 网吧游戏服务器制作教程,网吧服务器系统环境部署
  15. 小型数据集卷积神经网络CNN训练策略
  16. 解决:Connections could not be acquired from the unde
  17. 【电力系统经济调度】多元宇宙算法求解电力系统多目标优化问题附Matlab
  18. 一节前端课:html+css+js做个计算器
  19. JAVAWEB学习笔记--Day3
  20. LQ0198 圆周率【程序填空】

热门文章

  1. Excel只对列上指定内容进行序号累加的操作
  2. Excel宏(VBA)类模块的创建与调用
  3. vba 定义类_什么是模块,VBA中各种模块的有效行为
  4. matlab制作圆摆线动画
  5. 川大计算机考研失败经历,失败过,又成功了 川大传播学两年考研经验分享
  6. 基于springboot的图书借阅管理系统
  7. Altium Sesigner 测量距离后留下的距离图标如何删除的问题解决
  8. 【C语言】模拟简单的《掘地求生Getting Over It》(源码)
  9. python perl lisp_巴别塔-编程语言之旅【转】——C、C++、Lisp、Java、Perl、Ruby、Python核心比较...
  10. 09_Pandas从多个条件(AND,OR,NOT)中提取行