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,波形进度条相关推荐

  1. PyQt5之进度条:QProgressBar

    PyQt5之进度条:QProgressBar 在软件中,在处理特别冗长的任务时,如果没有相关的进度信息,这个等待的过程会比较考验用户的耐心,根据相关理论,进度条可以缓解用户在等待过程中的焦虑,所以,当 ...

  2. 【Pyqt5】进度条QProgressBar的使用/多线程更新/按钮美化/图片编码/开机自启动

    前言 诚如标题所见,我在使用Pyqt5进行开发时,先后遇到了上面几个问题.本篇博客就用来记录遇到问题/解决问题的过程,希望能给遇到相同问题的读者一些参考. 项目背景 我的项目是构建一个可视化的交互界面 ...

  3. python进度条 pyqt_python如何通过pyqt5实现进度条

    {"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],&q ...

  4. 基于PyQt5实现弹出任务进度条功能示例

    基于Python和PyQt5实现任务进度条功能示例 基于PyQt5的QprogressBar实现弹出进度条功能,在任务完成后进度条消失,在实际PythonGUI开发中起到一个任务执行过渡和任务提示的作 ...

  5. python进度条 pyqt_Python高级进阶#015 pyqt5进度条QProgressBar结合使用qbasictimer

    本期GUI界面,我们继续学习新的控件Qprogressbar. 知识回顾 1.滑动控件qslider 控件设置的关键:设置最大值.最小值,绝对范围. 2.核心类库QtCore,枚举类Qt 核心枚举类的 ...

  6. 【pyqt5学习】——进度条progressBar

    # 进度条 self.progressBar.setValue(0) # 设置进度条的最小值 self.progressBar.setMaximum(100) # 设置进度条的最大值 # 设置进度条当 ...

  7. PyQt5实战:你是成熟的软件啦,该有启动画面和加载进度条了!

    大家好,这里是Seon塞翁.笔者在最近的工作中做了一个基于PyQt5实现GUI的数据处理工具,领导表示"我想一双击就能直接看到情况啊,不要打开后还要我自己输入这个点击那个的!"好吧 ...

  8. 基于pyqt5 构建弹窗进度条,在大型计算中实时显示进度

    在大型计算时(例如神经网络训练),经常会遇到计算时间过长,无法知道当前的计算进度,无法判断程序是否进入死循环等问题.采用进度条可以在一定程度上了解当前进度,判断后续所需的计算时间,缓解等待过程中的焦虑 ...

  9. 【Python笔记】pyqt5进度条-多线程图像分块处理防止窗体卡顿

    目录 主要功能 环境配置 实现过程 1.设计ui 主界面 弹出框 窗体文件 2.主体实现 打开文件 计算函数 代码附录 title.ui titleok.ui title.py titleok.py ...

  10. PyQt5 --- 进度条拖动点击视频播放

    最近学习pyqt5,做一个视频播放器,网上找了很多资料都没有关于python方面的视频进度条拖动点击的方法,几乎都是Qt的.对相关资料的查阅,发现开发过程其实差不多,为此做一下相关的总结. 一.UI的 ...

最新文章

  1. cursor的moveToNext()与moveToFirst()
  2. 老司机也晕车--java字符串String晕车之旅
  3. 常用各种芯片手册大全_【汇总】超全面!国内芯片60个细分领域知名代表企业...
  4. leetcode 403. 青蛙过河(dp)
  5. 关于解决并发问题,99%的程序员都会忽略的一个重要方案!
  6. shell脚本:判断本地和远程文件是否存在
  7. 使用docker run的选项以覆盖Dockerfile中的设置详解
  8. [HeadFirst-HTMLCSS学习笔记][第八章扩大你的词汇量]
  9. Altium Designer生成Gerber文件
  10. 使用python获取nature系列期刊封面高清图片
  11. 关于python的自省机制
  12. redis管理_Redis 桌面管理工具Redis Desktop Manager
  13. OneZero第三周第三次站立会议(2016.4.6)
  14. hyperledger fabric 2.3.3 搭建教程
  15. C语言之动态内存开辟之malloc
  16. 基于mochiweb的chatty聊天室1
  17. Spring MVC PUT 表单参数获取
  18. 影响计算机关键性能参数测试研究,【计算机病毒论文】谈灯光告警计算机测试系统设计(共3104字)...
  19. 一些程序员必备的英语词汇及释义
  20. mysql服务没有及时响应启动或控制请求_“错误1053:服务没有及时响应启动或控制请求”问题的求解...

热门文章

  1. Spring Boot 接入支付宝,实战来了
  2. ARN的内存和CPU配置
  3. 程序员:走路也可以帮你拥有完美的翘臀!
  4. 判定两个点是否在一条直线的同一侧_帮帮学堂丨高中物理的常用方法、题型特点及应用注意点!建议收藏!...
  5. linux系统外接硬盘_Linux添加硬盘和挂载
  6. 解决nginx启动时域名解析失败而导致服务启动失败的问题【proxy_pass后面的域名进行DNS解析,解析失败则无法启动nginx】
  7. 华为HCNA实验操作之常用操作命令32-40
  8. java随机生成26个字母_js随机生成26个大小写字母
  9. c++读取stl文件
  10. 解决高德地图api叠加Imagelayer播放雷达图闪烁