PyQt5
基于PyQt5的重绘机制实现加载页面
- 效果预览
- 代码说明
- 控件初始化
- 超时回调
- 重绘事件
- 缩放事件
- 代码获取
效果预览
直接看图,效果展现为跟随黑点顺时针转动,且有明暗变化
代码说明
控件初始化
initUI
主要用于初始化用户界面(UI)。它创建了一个具有特定样式、占位文本、只读属性的文本框,设置了初始字体大小,初始化了一个颜色列表,并创建了一个定时器用于触发部件重绘事件。
def initUI(self):self.text_edit = QTextEdit(self) # 创建一个文本框'''加粗斜体无边框'''self.text_edit.setStyleSheet("font-style: italic; font-weight: bold; border: none; background-color: rgba(0, 0, 0, 0);")self.text_edit.setPlaceholderText(self.__wait_info()) # 文本框内容self.text_edit.setReadOnly(True) # 只读'''设置初始字体大小'''self.font = QFont()self.font.setPointSize(1)self.text_edit.setFont(self.font)'''初始化RGB列表'''self.color = []for angle in range(0, 18):self.color.append(14 * angle)'''初始化定时器用于出发部件重绘事件'''self.timer = QTimer(self)self.timer.timeout.connect(self.update_color)self.timer.start(100)
self.color
用于存储颜色值,通过for
循环,将一系列值(14 的倍数,从 0 到 14*17)添加到颜色列表中self.timer
用于更新颜色,固定超时时间为每 100 毫秒触发一次超时信号
超时回调
- 拼接
self.color[1:]
与self.color[:1]
self.update
触发部件的重绘
def update_color(self):'''更新RGB队列 模拟颜色变换'''self.color = self.color[1:] + self.color[:1]'''触发部件重绘:触发paintEvent事件,从而导致部件重新绘制自身'''self.update()
重绘事件
self.__get_radius()
用于获取圆形的半径(根据窗口的大小动态计算)for angle in range(0, 18)
绘制18个点以组成圆型self.__paint_dot
用于在指定坐标绘制点
def __paint_circle(self):'''计算当前窗口的中心坐标'''__center_x = self.width() // 2__center_y = self.height() // 2'''更新半径,跟随窗口大小变化而变化'''__radius = self.__get_radius()for angle in range(0, 18):'''计算绘制坐标'''__x = __center_x + int(__radius * math.cos(math.radians(20 * (18 - angle))))__y = __center_y + int(__radius * math.sin(math.radians(20 * (18 - angle))))'''绘制点 点的颜色根据self.color的值进行变换'''self.__paint_dot(__x, __y, self.color[angle])'''重写基类的重绘事件'''def paintEvent(self, event):'''用于自定义部件的外观绘制'''self.__paint_circle()
缩放事件
为了使UI更友好,我们可以重写基类的resizeEvent
事件,使圆型可以根据窗口的大小自动变化大小
def resizeEvent(self, event):'''当窗口或部件的大小发生改变时,resizeEvent方法会被自动调用''''''setGeometry 调整窗口部件的位置和大小'''__center_x = self.width() // 2__center_y = self.height() // 2 # 计算窗口的中心坐标__font_size = min(event.size().width(), event.size().height()) // 45 # 根据窗口的新尺寸计算字体大小__new_w = len(self.__wait_info()) * __font_size # 计算文本框的新宽度'''计算文本框的新位置坐标'''__new_x = __center_x - __new_w // 2__new_y = __center_y + self.__get_radius() + 10'''使用setGeometry方法设置文本框的新位置和大小'''self.text_edit.setGeometry(__new_x,__new_y,__new_w,int(__font_size * 2.7))'''调整字体大小'''self.font.setPointSize(__font_size)self.text_edit.setFont(self.font)
在缩放事件产生时,会自动触发重绘事件
代码获取
请从我的资源获取
相关文章:
PyQt5
基于PyQt5的重绘机制实现加载页面 效果预览代码说明控件初始化超时回调重绘事件缩放事件 代码获取 效果预览 直接看图,效果展现为跟随黑点顺时针转动,且有明暗变化 代码说明 控件初始化 initUI主要用于初始化用户界面(UI)。它创建了一个具有特定样式…...
【Linux】常用命令(2.6万字汇总)
文章目录 Linux常用命令汇总1. 基础知识1.1. Linux系统命令行的含义1.2. 命令的组成 2. 基础知识2.1. 关闭系统2.2. 关闭重启2.3. 帮助命令(help)2.4. 命令说明书(man)2.5. 切换用户(su)2.6.历史指令 3.目录…...
Vue3-06_路由
路由 后台路由是根据请求url,匹配请求处理的后台模块(路径) 前台根据访问路径,决定显示的内容。 路由就是: 访问hash 与内容的对应关系 路由的工作方式 用户点击页面的路由链接导致url地址栏中的Hash值发生了变化前…...
物理验证Calibre LVS | SMIC Process过LVS时VNW和VPW要如何做处理?
SMIC家工艺的数字后端实现PR chipfinish写出来的带PG netlist如下图所示。我们可以看到标准单元没有VNW和VPW pin的逻辑连接关系。 前几天小编在社区星球上分享了T12nm ananke_core CPU低功耗设计项目的Calibre LVS案例,就是关于标准单元VPP和VBB的连接问题。 目前…...
量化分析工具日常操作日记-5-通合科技
使用量化分析微信小程序工具“梦想兔企业智能风险分析助手”日常操作日记-5-军工-通合科技(300491)。 周末国家新政策,要大力支持军工行业,我用工具挖掘了两个低位股,供大家参考。通合科技(300491ÿ…...
windows和linux验证MD5码方式
一、linux linux自带MD5码验证: $ md5sum target_file.txt 二、windows windows自带的MD5码验证: $ certutil -hashfile target_file.txt MD5...
构造函数原型对象语法、原型链、原型对象
目录 一、前言 二、编程思想 面向过程 面向对象 三、构造函数 四、原型对象 constructor 属性 对象原型 原型继承 原型链 一、前言 通过本篇博客,我们将了解面向对象编程的一般特征,掌握基于构造函数原型对象的逻辑封装,掌握基于原…...
鸿蒙UI开发——自定义UI绘制帧率
1、概 述 随着设备屏幕的不断演进,当前主流设备采用LTPO屏幕(可变刷新率屏幕),此类屏幕支持在多个档位之间切换屏幕帧率。 对于快速变化的内容,如射击游戏,交互动画等,显示帧率越高࿰…...
鸿蒙基本组件结构
组件结构 1. 认识基本的组件结构 ArkTS通过装饰器Component 和Entry 装饰 struct 关键字声明的数据结构,构成一个自定义组件 自定义组件中提供了一个build函数,开发者需要在函数内以链式调用的方式进行基本的UI描述,UI描述的方法请参考UI描述…...
柔性鞋材振动刀智能视觉裁切机市场报告:未来几年年复合增长率CAGR为5.4%
震动刀切割设备是一种利用振动刀片在各种非金属材料表面上切割的设备,振动刀切割机利用刀片高频振动和360度旋转,能保证每分钟上万次的振动频率,可在平面进行垂直切割,锋利裁剪。震动刀切割设备切割速度快,可以单层切割…...
【计算机网络】基础知识,常识应用知识
局域网使用的是广播技术,广域网使用的是点对点技术,使用的协议不同。局域网工作在数据链路层,可以不要网络层,不存在路由选择问题。1968年6月,世界上最早的计算机网络是ARPAnet服务原语:请求、指示、相应、…...
【Linux进程篇1】认识冯·诺依曼体系结构(引出进程详解)
--------------------------------------------------------------------------------------------------------------------------------- 每日鸡汤: 用这生命中的每一秒,给自己一个不后悔的未来。 -----------------------------------------------…...
使用iviewui组件库的坑
背景 使用view-design组件库的Input组件的时候,按照产品的要求,输入框中只能键入正整数。 使用效果 如果直接使用组件的type属性,设置类型为number时,乍一看没啥问题,但是当我们键入 小数点(.) 或者 e/E 后面没有跟任…...
高级sql使用技巧
窗口函数(Window Functions): 窗口函数可以在结果集的行之间进行计算,例如计算移动平均值、排名等。在使用时,可以使用 OVER() 语句来定义窗口。例如: sql SELECT employee_id,salary,AVG(salary) OVER (P…...
403 Request Entity Too Lager(请求体太大啦)
昨天收到 QA 的生产报障,说是测试环境的附件上传功能报了 403 的错误,错误信息:403 Request Entity Too Lager。我尝试复现问题,发现传个几兆的文件都费劲啊,一传一个失败。不用说,项目用到 ng 代理&#x…...
Flutter 正在切换成 Monorepo 和支持 workspaces
其实关于 Monorepo 和 workspaces 相关内容在之前《Dart 3.5 发布,全新 Dart Roadmap Update》 和 《Flutter 之 ftcon24usa 大会,创始人分享 Flutter 十年发展史》 就有简单提到过,而目前来说刚好看到 flaux 这个新进展,所以就再…...
小白初入Android_studio所遇到的坑以及怎么解决
1. 安装Android_studio 参考:Android Studio 安装配置教程 - Windows(详细版)-CSDN博客 Android Studio超级详细讲解下载、安装配置教程(建议收藏)_androidstudio-CSDN博客 想下旧版本的android_studio的地址(仅供参考…...
NetCore使用Aop和内存缓存对接口、方法进行数据缓存
通过Aop内存缓存对接口、方法进行缓存 源码地址https://gitee.com/wangbenchi66/nuget 1. nuget包引入 必须引入包 至少在2024.11.7以上 <PackageReference Include"WBC66.Cache.Core" Version"2024.11.7" />必须开启内存缓存 否则后续步骤无法正…...
playwright学习记录2--定位方式
快捷导航 定位方式:元素操作断言方式自动等待 定位方式: csspage.get_by_role() 通过显式和隐式可访问性属性进行定位。page.get_by_text() 按文本内容定位。page.get_by_label() 通过关联标签的文本定位表单控件。page.get_by_placeholder() 通过占位符…...
响应式网页设计--html
一,HTML 文档的基本结构 一个典型的 HTML 文档包含了几个主要部分,基本结构如下(本文以下出现的所有代码都可以套入下面示例进行测试): <!DOCTYPE html> <html lang"zh"> <head><meta charset"UTF-8&q…...
C#核心(8) 静态成员
前言 先前我们已经学习了成员变量以及成员属性。 静态成员对于在整个应用程序中共享数据和功能非常有用。它们可以用于跟踪全局状态、共享常量和实现单例模式等。但是需要注意的是,过度使用静态成员可能导致代码变得难以维护和测试,因此应谨慎使用。其…...
关于git使用的图文教程(包括基本使用,处理冲突问题等等)超详细
目录 用户签名,初始化git git提交流程图 提交到本地库 版本穿梭 分支操作 分支合并冲突 团队协作 github的使用 推送代码 克隆 拉取代码 团队协作冲突 团队协作之分支管理 推送分支到分支: 拉去远程库分支到本地库: 本地删除远程分支&am…...
Axios 的 responseType 属性详解及 Blob 与 ArrayBuffer 解析
在前端开发的广阔天地中,Axios 犹如一颗璀璨的明星,为我们与服务器之间的通信搭建起坚实的桥梁。其中,responseType 属性更是赋予了我们灵活处理服务器响应的强大能力。 一、Axios 的 responseType 属性值及示例 1.arraybuffer 当我们将 r…...
redis集群介绍
1. 节点(Node): • Redis集群中的单个Redis服务器实例。每个节点都运行一个Redis服务器进程,并维护自己的数据。 2. 分片(Sharding): • 将数据集分割成多个部分,并分布到不同的节点…...
JDK中常用的包有哪些?
1.java.lang 描述:包含Java语言的核心类,不需要显式导入。 常用类:Object、String、Math、System、Thread、Exception等。 2.java.util 描述:提供了集合框架、日期和时间功能、随机数生成、扫描和格式化等实用工具类。 常用类…...
校园官网练习---web
HTML: <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>西安工商学院</title><…...
MySQL中指定字段的某个值排在前面
一 需求 如果我们想讲表中指定的字段的某一个值排序在最前面应该如何处理? 二 实现方式 方法 1、使用<>,xml中使用<![CDATA[跳过解析的特殊符号]]>或者<(小于符号)>(大于符号) ORDER …...
【51单片机】I2C总线详解 + AT24C02
学习使用的开发板:STC89C52RC/LE52RC 编程软件:Keil5 烧录软件:stc-isp 开发板实图: 文章目录 AT24C02介绍存储器 I2C总线介绍I2C时序结构数据帧AT24C02数据帧 编程实例 —— 按键控制数据大小&存储器写入读出 AT24C02介绍 …...
直接插入排序法
任务描述 本关任务:要求编写程序实现直接插入排序的功能。 相关知识 直接插入排序,是指将无序序列中的各元素依次插入到已经有序的数组中。 假设数组中前 i-1 元素已经有序,现在要将线性表中第 i 个元素插入到前面的有序子表中,…...
mysql中InnoDB索引与MyISAM索引
mysql索引 InnoDB 索引存储 主键索引(聚簇索引) 定义:主键索引是 InnoDB 存储引擎的聚簇索引,它决定了表中数据的物理存储顺序。每个 InnoDB 表都有一个且仅有一个聚簇索引。存储:主键索引的叶子节点直接包含表的数…...
淘宝网站怎么做的好坏/建立网站的步骤
最近看到了去哪儿的一个添加自己旅行记录的栏目 里面中国地区用的百度地图 这是去哪儿的效果 实在很强大 我只调了他的地图块模仿了一下 下面是自己根据百度API 模仿去哪儿的 下面有下载的代码 去哪儿的这个栏目的数据好像是用百度自身地图搜索的结果数据 但是有些功能好像百度…...
沈阳网站公司排名/灰色行业推广平台网站
修改CKplayer.js 源码解决移动端浏览器全屏不能限制快进的问题参考文章: (1)修改CKplayer.js 源码解决移动端浏览器全屏不能限制快进的问题 (2)https://www.cnblogs.com/jying/p/9642445.html 备忘一下。...
有服务器和域名怎么做网站/搜索排名提升
推荐: 从屏幕中间弹出的Dialog底部滑出的Dialog从屏幕右侧滑出的Dialog从屏幕顶部滑出的 Dialog 日常工作中,自己定义了 Dialog 的工具类,以便使用,下面从底部滑出的 Dialog,效果图如下: 下面主要讲的是&a…...
兰州做网站多少钱/企点qq
Java基础 1.JAVA 中的几种数据类型是什么,各自占用多少字节。 2.String 类能被继承吗,为什么。 3. 两个对象的 hashCode() 相同,则 equals() 也一定为 true,对吗? 4. String 属于基础的数据类型吗? 5.…...
越南做It网站推广/网络推广靠谱吗
定时器一般用handler和线程或者timer来实现,但是android中提供了一个计时器类CountDownTimer。定时执行在一段时候后停止的倒计时,在倒计时执行过程中会在固定间隔时间得到通知(触发onTick方法)。将后台线程的创建和Handler队列封…...
东莞手机网站建设入门/搜索引擎营销推广
抽象类(abstract class): abstract 修饰符用于表示所修饰的类是不完整的,并且它只能用作基类。抽象类与非抽象类在以下方面是不同的: 抽象类不能直接实例化,并且对抽象类使用 new 运算符是编译时错误。虽然一些变量和值在编译时的类型可以是…...