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. 开源wkhtmltopdf使用心得 (四)
  2. POC of settype read harmonization - using description settype as example
  3. 一个方法多个return_用这个方法可以快速、准确地记住一个单词的多个词义
  4. Codeforces Round #606 (Div. 2, based on Technocup 2020 Elimination Round 4) dfs + 思维
  5. html5 canvas 头像上传
  6. 使用方法_山西硅肥使用方法
  7. 腰椎患者多运动好,还是多休息好?
  8. php 完整redis类,PHP Redis类
  9. 【学术】论文读不懂怎么办?
  10. 第一次作业:阅读优秀博文感想
  11. Javascript的防抖和节流、VUE的防抖和节流
  12. 2062【例1.3】电影票-一 c++语言入门-c++语言
  13. linux远ssh sed,ssh远程执行sed -i命令,替换的内容中含有双引号的问题
  14. 【3】WEB安全学习----HTTP协议
  15. 华为P40系列手机camera特性分析
  16. 实习日记(9)——C++编译出现error in locking authority file ~/.Xauthority
  17. 三阶魔方CFOP复原的C语言算法
  18. discus mysql 性能_百万纪录级mysql数据库以及discuz!优化
  19. SQL Server中的锁
  20. 如何利用计算机系统进行辅助决策,基于IDSS的计算机辅助定密系统研究

热门文章

  1. LEAK: ByteBuf.release() was not called before it's garbage-collected. Enable advanced leak reporting
  2. tomcat consider increasing the maximum size of the cache
  3. 微信个性化菜单 java_微信公众平台开发(109) 个性化菜单
  4. matlab迭代法求超越方程,matlab fsolve函数求解超越方程
  5. Xlookup、Vlookup请走开,万能的Wlookup函数来了!
  6. 数据管理平台(DMP)
  7. C# Delegate引介
  8. 微信小程序之文本换行居中
  9. Android自定义view实现日历控件
  10. [转]计算机经典书籍