pyqt5,波形进度条
py Qt5 进度条 动态
大多数也都是缝补的直接上代码可运行
python 3.8
pyqt5
#水波进度
#aut evildoer 202206017
import math
import sys
from PyQt5 import *
from PyQt5.QtCore import *
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
from threading import Timer
import timedef qMin(va1, va2):if va1<=va2:return va1else:return va2pass
class cirulars(QWidget):def __init__(self, parent=None):super(QWidget, self).__init__(parent)self.setWindowFlags(Qt.FramelessWindowHint) # 去边框self.setAttribute(Qt.WA_TranslucentBackground) # 设置窗口背景透明self.fsize = 10self.resize(400, 400)self.layout = QGridLayout(self)# 背景填充灰色self.setAutoFillBackground(True)p = QPalette()p.setColor(QPalette.Background, QColor(237, 237, 237))self.setPalette(p)# 设置进度条颜色self.bg_color = QColor(0, 0xBF, 0xBB)self.bg_colors = QColor(0, 0xBF, 0xBB)# 设置界面刷新时间self.startTimer(80)self.m_waterOffset = 0.05self.m_offset = 50self.m_borderwidth = 10# 进度条进度范围0-100self.per_num = 0self.statuc = False # false is updata true is starself.cunt =0 #0_4# self.setMouseTracking(True)# def updataviw(self):# self.update()# QApplication.processEvents()def paintEvent(self, event):if self.cunt>0:self.cunt -=1# print(self.cunt)# 锯齿状绘画板;painter = QPainter()painter.setRenderHint(QPainter.Antialiasing)painter.begin(self)painter.setPen(Qt.NoPen)# 获取窗口的宽度和高度width, height = self.width(), self.height()side = qMin(width, height)percentage = 1 - self.per_num / 100if self.statuc:percentage=0# 水波走向:正弦函数 y = A(wx+l) + k# w 表示 周期,值越大密度越大w = 2 * math.pi / (side) # width ->side# A 表示振幅 ,理解为水波的上下振幅A = height * self.m_waterOffset# k 表示 y 的偏移量,可理解为进度k = height * percentagewater1 = QPainterPath()water2 = QPainterPath()# 起始点water1.moveTo(0, height)water2.moveTo(0, height)self.m_offset += 0.6if (self.m_offset > (width / 2)):self.m_offset = 0i = 5rect = QRectF(self.fsize, self.fsize, width - self.fsize * 2, height - self.fsize * 2)while (i < width - 5):waterY1 = A * math.sin(w * i + self.m_offset) + kwaterY2 = A * math.sin(w * i + self.m_offset + width / 2 * w) + kwater1.lineTo(i, waterY1)water2.lineTo(i, waterY2)i += 1water1.lineTo(width - 5, height)water2.lineTo(width - 5, height)totalpath = QPainterPath()# totalpath.addRect(QRectF(5, 5, self.width() - 10, self.height() - 10))# painter.setBrush(Qt.gray)painter.drawRect(self.rect())painter.save()totalpath.addEllipse(rect)totalpath.intersected(water1)painter.setPen(Qt.NoPen)# 设置水波的透明度if self.statuc:if(self.cunt>5):watercolor1 = QColor(self.bg_colors)watercolor1.setAlpha(0) #100watercolor2 = QColor(self.bg_colors)watercolor2.setAlpha(0) #150else:watercolor1 = QColor(self.bg_colors)watercolor1.setAlpha(120 - (self.cunt +1 ) * 20) # 100watercolor2 = QColor(self.bg_colors)watercolor2.setAlpha(120 - (self.cunt + 1 ) * 20+50) # 150else:if (self.cunt > 5):watercolor1 = QColor(self.bg_color)watercolor1.setAlpha(0) #100watercolor2 = QColor(self.bg_color)watercolor2.setAlpha(0) #150else:watercolor1 = QColor(self.bg_color)watercolor1.setAlpha(120 - (self.cunt +1 ) * 20) # 100watercolor2 = QColor(self.bg_color)watercolor2.setAlpha(120 - (self.cunt +1 ) * 20) # 150path = totalpath.intersected(water1)painter.setBrush(watercolor1)painter.drawPath(path)path = totalpath.intersected(water2)painter.setBrush(watercolor2)painter.drawPath(path)painter.restore()'''绘制字体'''m_font = QFont()m_font.setFamily('Microsoft YaHei')m_font.setPixelSize(int(self.width() / 7))painter.setPen(Qt.black)painter.setFont(m_font)if self.statuc:painter.drawText(self.rect(), Qt.AlignCenter, "Star")else:if self.per_num>=100:painter.drawText(self.rect(), Qt.AlignCenter, "Complate")else:painter.drawText(self.rect(), Qt.AlignCenter, "{}%".format(self.per_num))pen = QPen(QColor(int(153 - 1.53 * self.per_num),int(217 - 0.55 * self.per_num),int(234 - 0.02 * self.per_num)), 7)painter.setPen(pen)# painter.setPen(QColor(int(153 - 1.53 * self.per_num),# int(217 - 0.55 * self.per_num),# int(234 - 0.02 * self.per_num)),) ## painter.setPen(self.pen)if self.statuc:painter.drawArc(rect, 0, 360 *16)else:if self.per_num>=100:painter.drawArc(rect, 0, 360 *16)else:painter.drawArc(rect, 90*16 - 57 * self.per_num , 57 * self.per_num)painter.end()# 鼠标进入处理def enterEvent(self, QEvent):self.setCursor(QCursor(Qt.PointingHandCursor))pass# 鼠标离开处理def leaveEvent(self, QEvent):self.setCursor(QCursor(Qt.ArrowCursor))pass# def mouseMoveEvent(self, event):# s = event.windowPos()# self.setMouseTracking(True)# print(s.x(),s.y())def mousePressEvent(self, event):#标键按下时调用;if event.buttons() == Qt.LeftButton: # 左键按下# print("单击鼠标左键") # 响应测试语句if self.cunt==0:if self.statuc:self.statuc = ~self.statucself.cunt = 6else:if self.per_num >=100:self.cunt = 6self.per_num=0self.statuc = ~self.statucelif event.buttons() == Qt.RightButton: # 右键按下# print("单击鼠标右键") # 响应测试语句pass# def mouseReleaseEvent(self, event): # 鼠标键公开时调用;# if event.button() == Qt.LeftButton:# print("t单击鼠标左键") # 响应测试语句# elif event.button() == Qt.RightButton: # 右键按下# print("t单击鼠标右键") # 响应测试语句def timerEvent(self, event):#self.per_num +=1if self.per_num >= 100:self.per_num = 100self.update()def setAngles(self, vale:int):if vale<0:self.per_num = 0elif vale>100:self.per_num = 100else:self.per_num = vale#if __name__ == "__main__":app = QApplication(sys.argv)mainwin = cirulars()mainwin.setWindowRole("20")mainwin.show()sys.exit(app.exec_())
pyqt5,波形进度条相关推荐
- PyQt5之进度条:QProgressBar
PyQt5之进度条:QProgressBar 在软件中,在处理特别冗长的任务时,如果没有相关的进度信息,这个等待的过程会比较考验用户的耐心,根据相关理论,进度条可以缓解用户在等待过程中的焦虑,所以,当 ...
- 【Pyqt5】进度条QProgressBar的使用/多线程更新/按钮美化/图片编码/开机自启动
前言 诚如标题所见,我在使用Pyqt5进行开发时,先后遇到了上面几个问题.本篇博客就用来记录遇到问题/解决问题的过程,希望能给遇到相同问题的读者一些参考. 项目背景 我的项目是构建一个可视化的交互界面 ...
- python进度条 pyqt_python如何通过pyqt5实现进度条
{"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],&q ...
- 基于PyQt5实现弹出任务进度条功能示例
基于Python和PyQt5实现任务进度条功能示例 基于PyQt5的QprogressBar实现弹出进度条功能,在任务完成后进度条消失,在实际PythonGUI开发中起到一个任务执行过渡和任务提示的作 ...
- python进度条 pyqt_Python高级进阶#015 pyqt5进度条QProgressBar结合使用qbasictimer
本期GUI界面,我们继续学习新的控件Qprogressbar. 知识回顾 1.滑动控件qslider 控件设置的关键:设置最大值.最小值,绝对范围. 2.核心类库QtCore,枚举类Qt 核心枚举类的 ...
- 【pyqt5学习】——进度条progressBar
# 进度条 self.progressBar.setValue(0) # 设置进度条的最小值 self.progressBar.setMaximum(100) # 设置进度条的最大值 # 设置进度条当 ...
- PyQt5实战:你是成熟的软件啦,该有启动画面和加载进度条了!
大家好,这里是Seon塞翁.笔者在最近的工作中做了一个基于PyQt5实现GUI的数据处理工具,领导表示"我想一双击就能直接看到情况啊,不要打开后还要我自己输入这个点击那个的!"好吧 ...
- 基于pyqt5 构建弹窗进度条,在大型计算中实时显示进度
在大型计算时(例如神经网络训练),经常会遇到计算时间过长,无法知道当前的计算进度,无法判断程序是否进入死循环等问题.采用进度条可以在一定程度上了解当前进度,判断后续所需的计算时间,缓解等待过程中的焦虑 ...
- 【Python笔记】pyqt5进度条-多线程图像分块处理防止窗体卡顿
目录 主要功能 环境配置 实现过程 1.设计ui 主界面 弹出框 窗体文件 2.主体实现 打开文件 计算函数 代码附录 title.ui titleok.ui title.py titleok.py ...
- PyQt5 --- 进度条拖动点击视频播放
最近学习pyqt5,做一个视频播放器,网上找了很多资料都没有关于python方面的视频进度条拖动点击的方法,几乎都是Qt的.对相关资料的查阅,发现开发过程其实差不多,为此做一下相关的总结. 一.UI的 ...
最新文章
- cursor的moveToNext()与moveToFirst()
- 老司机也晕车--java字符串String晕车之旅
- 常用各种芯片手册大全_【汇总】超全面!国内芯片60个细分领域知名代表企业...
- leetcode 403. 青蛙过河(dp)
- 关于解决并发问题,99%的程序员都会忽略的一个重要方案!
- shell脚本:判断本地和远程文件是否存在
- 使用docker run的选项以覆盖Dockerfile中的设置详解
- [HeadFirst-HTMLCSS学习笔记][第八章扩大你的词汇量]
- Altium Designer生成Gerber文件
- 使用python获取nature系列期刊封面高清图片
- 关于python的自省机制
- redis管理_Redis 桌面管理工具Redis Desktop Manager
- OneZero第三周第三次站立会议(2016.4.6)
- hyperledger fabric 2.3.3 搭建教程
- C语言之动态内存开辟之malloc
- 基于mochiweb的chatty聊天室1
- Spring MVC PUT 表单参数获取
- 影响计算机关键性能参数测试研究,【计算机病毒论文】谈灯光告警计算机测试系统设计(共3104字)...
- 一些程序员必备的英语词汇及释义
- mysql服务没有及时响应启动或控制请求_“错误1053:服务没有及时响应启动或控制请求”问题的求解...
热门文章
- Spring Boot 接入支付宝,实战来了
- ARN的内存和CPU配置
- 程序员:走路也可以帮你拥有完美的翘臀!
- 判定两个点是否在一条直线的同一侧_帮帮学堂丨高中物理的常用方法、题型特点及应用注意点!建议收藏!...
- linux系统外接硬盘_Linux添加硬盘和挂载
- 解决nginx启动时域名解析失败而导致服务启动失败的问题【proxy_pass后面的域名进行DNS解析,解析失败则无法启动nginx】
- 华为HCNA实验操作之常用操作命令32-40
- java随机生成26个字母_js随机生成26个大小写字母
- c++读取stl文件
- 解决高德地图api叠加Imagelayer播放雷达图闪烁