python3GUI--模仿一些b站网页端组件By:PyQt5(详细介绍、附下载地址)

news2024/11/14 13:26:16

文章目录

  • 一.前言
  • 二.展示
    • 1.banner
      • 1.静图
      • 2.动图
    • 2.一般视频组件
      • 1.静图
      • 2.动图
    • 3.排行榜
      • 1.静图
      • 2.动图
  • 三.设计心得(顺序由简到难)
    • 1.排行榜
    • 2.一般视频组件
    • 3.banner
  • 四.总结
  • 五.下载地址


一.前言

播客二连发,本次使用PyQt5模仿b站网页端的一些组件,如:首页banner、一般视频组件、排行榜,撰写本篇,记录下UI设计过程以及一些细节,小组件均已打包好放在了文末,大家一定要看到最后呀~

二.展示

1.banner

本次尽最大程度模仿了b站的banner,学了个几分样。后面有详细介绍banner的设计思路。

1.静图

在这里插入图片描述

2.动图

请添加图片描述

2.一般视频组件

1.静图

默认状态
在这里插入图片描述

hover状态
在这里插入图片描述

2.动图

请添加图片描述

3.排行榜

1.静图

默认状态
在这里插入图片描述
hover状态
在这里插入图片描述

2.动图

请添加图片描述

三.设计心得(顺序由简到难)

1.排行榜

为什么我把排行榜放在了最简单的呢?是因为这个组件比其他两个组件都简单/笑哭。

这个组件由两部分组成,分别是主体列表和上方悬浮窗口,先说主体:主体由一个QListWidget构成,每个列表项放置自定义的列表组件,列表组件为一个显示排行的QLabel和一个显示标题的QLable组成,把列表组件放置在QListWidgetItem中,最后将每个组件放置到列表中即可。上方悬浮窗口:在创建列表项时,已经创建好每个上方悬浮窗口了,即有几行列表项就有几个上方悬浮窗口,每个悬浮窗口的布局为垂直布局,局部为水平布局,使用QToolButton设置QIcon显示每个图标,使用QLabel配合QPixmap显示图片,这样每个上方悬浮窗口就实例化好了,默认隐藏。UI绘制好后,绑定每个列表组件的enterEvent、leaveEvent方法,比如当鼠标放置在排行为“1”的列表项时,所在的列表项会发出item_hovered_signal信号到主界面,主界面收到此信号后,使用槽函数接收,通过索引确认要展示的悬浮窗口,再通过相对位置计算悬浮窗口要显示的位置,最后把悬浮窗口显示出来,相关代码如下:

在这里插入图片描述

2.一般视频组件

这个组件在b站上是支持鼠标移入后播放视频的,本次简化了此组件,鼠标移入后展示相关数据消失、待看按钮展示。

这个组件整体由主封面和hover面板构成,主封面是一个QLabel,放置在一个自定义的QFrame中,QFrame将一个信号绑定了enterEvent、leaveEvent中,即每当鼠标移入或移出QLabel后,都会发射一个信号,这个信号使得我们的hover面板展示。hover面板指的是悬浮在主封面上方的一个固定区域,此区域由上下两部分组成,整体是放在一个QFrame中,右上角放置“待看”按钮,支持点击切换样式的交互,下方则是一个区域叫做信息面板,此区域背景色为黑色透明渐变,方向是自下而上,区域的上方为三个信息分别是播放数量、弹幕数量和视频时长,每当鼠标移入hover面板后,信息面板通过透明度变化的动画进行隐藏,这时状态为隐藏的“待看”按钮透明度发生变化,展示到主界面上,动画的持续时间为450ms,当鼠标移出组件时,动画反向播放。设置动画的相关代码如下:

在这里插入图片描述

3.banner

本次banner设计最耗时,因为整体布局没有拿捏好,造成了许多时间的浪费。

banner整体布局为垂直布局,是由主封面和hover面板构成,主封面为QLabel,通过放置QPixmap的方式展示封面。hover面本由背景QFrame和hover区域构成,先说hover区域,它的布局为垂直布局,上方为水平布局,左侧放置banner标题,右侧放置可点击切换的按钮,布局下方放置“点点”,有多少个banner主封面,就生成几个这样的组件,再说背景QFrame,这里涉及到一个问题,如何才能根据主封面设置背景QFrame的背景颜色呢?相关代码附在了下方,大概思路是:将当前QPixmap转化成Image,由于每个QPixmap的大小是固定的,所以可以指定一个QPoint提取这个位置所在像素的颜色,最后转化成RGB格式,通过改变QSS的方式改变背景QFrame的颜色。

在这里插入图片描述

四.总结

本次使用PyQt5模仿了B站的一些WEB端小组件,像不像三分样,撰写本篇记录下开发的流程,与大家分享我在设计UI上的心得与体会,办法总比困难多,解决问题的方法也不仅仅只有一个,如果觉得本篇博文对你有帮助,能点个赞么?

在这里插入图片描述

五.下载地址

1.一般视频组件
2.排行榜
3.banner

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/932388.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

React Hooks 全解:零基础入门

Hooks 的由来 你还在为该使用无状态组件(Function)还是有状态组件(Class)而烦恼吗? ——拥有了hooks,你再也不需要写Class了,你的所有组件都将是Function。 你还在为搞不清使用哪个生命周期钩…

RT-Thread 线程间同步

多个执行单元(线程、中断)同时执行临界区,操作临界资源,会导致竟态产生。 RTT使用信号量、互斥量、事件集来解决这种问题。 同步(按顺序)、互斥(排它)。 信号量 信号量是一种轻型…

Adobe Media Encoder软件安装包分享(附安装教程)

目录 一、软件简介 二、软件下载 一、软件简介 Adobe Media Encoder是一款由Adobe公司开发的视频和音频后期制作软件,它集成了多种编码格式和输出选项,可以帮助用户将视频和音频文件转换成适合各种用途的格式。该软件可以与Adobe Premiere Pro、After …

使用delphi XE10.3.2 开发linux 上的Daemon

delphi 10.3.2支持linux, 而且官方只是支持命令行编程,目地就是做linux 服务器端的开发。 既然是做linux服务器端的开发,那么普通的命令行运行程序,然后等待开一个黑窗口的方式就 太low了(目前就有个别语言大咖,经常在Windows 上开个黑窗口,看起来非常恶心),那么如果…

HTML+CSS 查漏补缺

目录 1,HTML1,尺寸的百分比1,普通元素2,绝对(固定)定位元素3,常见百分比 2,form 表单元素1,form2,button3,label4,outline5&#xff0…

Vue2向Vue3过度Vue3状态管理工具Pinia

目录 1. 什么是Pinia2. 手动添加Pinia到Vue项目3. Pinia基础使用4. getters实现5. action异步实现6. storeToRefs工具函数7. Pinia的调试8. Pinia持久化插件 1. 什么是Pinia Pinia 是 Vue 的专属的最新状态管理库 ,是 Vuex 状态管理工具的替代品 2. 手动添加Pinia到…

css之文字连续光影特效、动画、scss

文章目录 效果图htmlscsscss 效果图 html <div><span>C</span><span>O</span><span>L</span><span>O</span><span>R</span><span>F</span><span>U</span><span>L</span&…

Linux--进程地址空间

1.线程地址空间 所谓进程地址空间&#xff08;process address space&#xff09;&#xff0c;就是从进程的视角看到的地址空间&#xff0c;是进程运行时所用到的虚拟地址的集合。 简单地说&#xff0c;进程就是内核数据结构和代码和本身的代码和数据&#xff0c;进程本身不能…

MybatisPlus(1)

前言&#x1f36d; ❤️❤️❤️SSM专栏更新中&#xff0c;各位大佬觉得写得不错&#xff0c;支持一下&#xff0c;感谢了&#xff01;❤️❤️❤️ Spring Spring MVC MyBatis_冷兮雪的博客-CSDN博客 MyBatis-Plus&#xff08;简称MP&#xff09;是一个 Mybatis 的增强工具&…

【PHP】面向对象相关概念

文章目录 面向对象概念关键字说明关于类类成员访问修饰限定符类内部对象-this对象开发规范构造方法析构方法对象传值范围解析操作符&#xff08;类常量访问&#xff09;静态成员self关键字对象克隆 面向对象高级封装继承多态 面向对象概念 面向对象编程也叫做OOP编程&#xff…

时间和日期--Python

1. 时间&#xff1a;time模块 总结&#xff1a;2. datetime模块 相比与time模块&#xff0c;datetime模块的接口更直观、更容易调用 2.1 datetime模块定义的类 &#xff08;1&#xff09;datetime.date:表示日期的类。常用的属性有&#xff1a;year、month、day; &#xff…

【C++】C++ 引用详解 ④ ( 函数返回 静态变量 / 全局变量 的 引用 / 指针 )

文章目录 一、函数返回 静态变量 / 全局变量 的 引用 / 指针1、函数返回局部变量引用或指针无意义2、函数返回静态变量/全局变量的引用或指针3、代码示例 - 函数返回静态变量/全局变量的引用或指针 一、函数返回 静态变量 / 全局变量 的 引用 / 指针 1、函数返回局部变量引用或…

【多线程】Thread类的用法

文章目录 1. Thread类的创建1.1 自己创建类继承Thread类1.2 实现Runnable接口1.3 使用匿名内部类创建Thread子类对象1.4 使用匿名内部类创建Runnable子类对象1.5 使用lambda创建 2. Thread常见的构造方法2.1 Thread()2.2 Thread(Runnable target)2.3 Thread(String name)2.4 Th…

使用CSS的@media screen 规则为不同的屏幕尺寸设置不同的样式(响应式图片布局)

当你想要在不同的屏幕尺寸或设备上应用不同的CSS样式时&#xff0c;可以使用 media 规则&#xff0c;特别是 media screen 规则。这允许你根据不同的屏幕特性&#xff0c;如宽度、高度、方向等&#xff0c;为不同的屏幕尺寸设置不同的样式。 具体来说&#xff0c;media screen…

开发者插件推荐FeHelper

开发者巨好用的插件、有很多功能比如json美化、对比&#xff0c;二维码/解码&#xff0c;图片转Base64&#xff0c;时间戳转换等 一、下载插件 1、打开网址&#xff1a;FeHelper - Awesome&#xff08;建议用谷歌打开&#xff09;&#xff1b; 2、选择要下载的版本&#xff0c…

系统架构设计高级技能 · 云原生架构设计理论与实践

系列文章目录 系统架构设计高级技能 软件架构概念、架构风格、ABSD、架构复用、DSSA&#xff08;一&#xff09;【系统架构设计师】 系统架构设计高级技能 系统质量属性与架构评估&#xff08;二&#xff09;【系统架构设计师】 系统架构设计高级技能 软件可靠性分析与设计…

第61步 深度学习图像识别:多分类建模(TensorFlow)

基于WIN10的64位系统演示 一、写在前面 截至上期&#xff0c;我们一直都在做二分类的任务&#xff0c;无论是之前的机器学习任务&#xff0c;还是最近更新的图像分类任务。然而&#xff0c;在实际工作中&#xff0c;我们大概率需要进行多分类任务。例如肺部胸片可不仅仅能诊断…

YOLO目标检测——脑肿瘤检测数据集下载分享

脑肿瘤检测数据集是用于训练和评估脑肿瘤检测算法和模型的数据集&#xff0c;共同500张高清图像。 数据集点击下载&#xff1a;YOLO脑肿瘤检测数据集500图像.rar

政务大厅人员睡岗离岗玩手机识别算法

人员睡岗离岗玩手机识别算法通过pythonyolo系列网络框架算法模型&#xff0c;人员睡岗离岗玩手机识别算法利用图像识别和行为分析&#xff0c;识别出睡岗、离岗和玩手机等不符合规定的行为&#xff0c;并发出告警信号以提醒相关人员。Python是一种由Guido van Rossum开发的通用…