当前位置:   article > 正文

用PyQt5实现一个渐隐动画的消息弹窗_pyqt5 弹出动画

pyqt5 弹出动画

实现效果如下:

无法显示图片

关键代码:

self.setWindowOpacity(opacity)  # 设置窗口透明度,值为0-1之间,1为完全不透明

全部代码:

  1. # -*- coding: utf-8 -*-
  2. @author: daimashiren
  3. @time: 2020/07/06
  4. from time import sleep
  5. from PyQt5.QtCore import Qt,QRect,QPoint,QTimer
  6. from PyQt5.QtWidgets import QDialog,QLabel,QApplication,QHBoxLayout,QDesktopWidget
  7. class Msg(QDialog):
  8. def __init__(self):
  9. super(Msg, self).__init__()
  10. self.ini_ui()
  11. def ini_ui(self):
  12. self.setWindowModality(Qt.NonModal)
  13. self.setWindowOpacity(0.8) # 设置窗口透明度
  14. self.setStyleSheet("""
  15. QDialog{
  16. border: none;
  17. background:rgb(150,150,150,100);}
  18. """)
  19. self.setWindowFlags(Qt.FramelessWindowHint | Qt.WindowStaysOnTopHint | Qt.Tool)
  20. win_center = QDesktopWidget().availableGeometry().center()
  21. geo = QRect(win_center.x() + 50, win_center.y() - 75, 300, 100)
  22. self.setGeometry(geo)
  23. self.setContentsMargins(0, 0, 0, 0)
  24. main_layout = QHBoxLayout()
  25. self.setLayout(main_layout)
  26. main_layout.setAlignment(Qt.AlignVCenter|Qt.AlignHCenter)
  27. self.msg_label = QLabel()
  28. self.msg_label.setStyleSheet("""
  29. QLabel{
  30. color:#7fccde;
  31. text-align:left;
  32. border:none;
  33. border-image:none;
  34. font-size:25px;
  35. font-weight:300;
  36. font-family: "黑体","Arial","Microsoft YaHei","宋体",sans-serif;
  37. }
  38. """)
  39. main_layout.addWidget(self.msg_label)
  40. self.fade_timer = QTimer()
  41. self.fade_timer.setInterval(2000)
  42. self.fade_timer.timeout.connect(self.faded_out)
  43. # (中心展示)只能在show方法后调用
  44. def center_show(self, offset):
  45. geo = self.frameGeometry()
  46. cp = QDesktopWidget().availableGeometry().center() # 获取显示器分辨率,并找到中间点
  47. if offset:
  48. print("窗口偏置")
  49. geo.moveCenter(cp + offset) # 将窗口中点偏置
  50. else:
  51. geo.moveCenter(cp) # 将窗口中点放在屏幕中间
  52. self.move(geo.topLeft())
  53. def show_msg(self,text):
  54. self.fade_timer.start()
  55. self.msg_label.setText(text)
  56. self.msg_label.repaint()
  57. self.raise_()
  58. self.show()
  59. self.center_show(QPoint(75,0))
  60. self.exec_() # 动画弹出
  61. sleep(0.5)
  62. def faded_out(self):
  63. print("窗口渐隐")
  64. for i in range(80,0,-1):
  65. opacity = i/100
  66. print("opacity:",opacity)
  67. self.setWindowOpacity(opacity) # 设置窗口透明度
  68. self.repaint()
  69. QApplication.processEvents()
  70. sleep(0.05)
  71. self.fade_timer.stop()
  72. self.close()
  73. if __name__ == "__main__":
  74. import sys
  75. app = QApplication(sys.argv)
  76. msg = Msg()
  77. msg.show_msg("测试信息...")
  78. sys.exit(app.exec_())

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Guff_9hys/article/detail/930882
推荐阅读
相关标签
  

闽ICP备14008679号