赞
踩
实现效果如下:
关键代码:
self.setWindowOpacity(opacity) # 设置窗口透明度,值为0-1之间,1为完全不透明
全部代码:
- # -*- coding: utf-8 -*-
-
- @author: daimashiren
- @time: 2020/07/06
- from time import sleep
- from PyQt5.QtCore import Qt,QRect,QPoint,QTimer
- from PyQt5.QtWidgets import QDialog,QLabel,QApplication,QHBoxLayout,QDesktopWidget
-
-
- class Msg(QDialog):
- def __init__(self):
- super(Msg, self).__init__()
- self.ini_ui()
-
-
- def ini_ui(self):
- self.setWindowModality(Qt.NonModal)
- self.setWindowOpacity(0.8) # 设置窗口透明度
- self.setStyleSheet("""
- QDialog{
- border: none;
- background:rgb(150,150,150,100);}
- """)
- self.setWindowFlags(Qt.FramelessWindowHint | Qt.WindowStaysOnTopHint | Qt.Tool)
- win_center = QDesktopWidget().availableGeometry().center()
- geo = QRect(win_center.x() + 50, win_center.y() - 75, 300, 100)
- self.setGeometry(geo)
- self.setContentsMargins(0, 0, 0, 0)
- main_layout = QHBoxLayout()
- self.setLayout(main_layout)
- main_layout.setAlignment(Qt.AlignVCenter|Qt.AlignHCenter)
- self.msg_label = QLabel()
- self.msg_label.setStyleSheet("""
- QLabel{
- color:#7fccde;
- text-align:left;
- border:none;
- border-image:none;
- font-size:25px;
- font-weight:300;
- font-family: "黑体","Arial","Microsoft YaHei","宋体",sans-serif;
- }
- """)
- main_layout.addWidget(self.msg_label)
-
- self.fade_timer = QTimer()
- self.fade_timer.setInterval(2000)
- self.fade_timer.timeout.connect(self.faded_out)
-
- # (中心展示)只能在show方法后调用
- def center_show(self, offset):
- geo = self.frameGeometry()
- cp = QDesktopWidget().availableGeometry().center() # 获取显示器分辨率,并找到中间点
- if offset:
- print("窗口偏置")
- geo.moveCenter(cp + offset) # 将窗口中点偏置
- else:
- geo.moveCenter(cp) # 将窗口中点放在屏幕中间
- self.move(geo.topLeft())
-
- def show_msg(self,text):
- self.fade_timer.start()
- self.msg_label.setText(text)
- self.msg_label.repaint()
- self.raise_()
- self.show()
- self.center_show(QPoint(75,0))
- self.exec_() # 动画弹出
- sleep(0.5)
-
-
-
- def faded_out(self):
- print("窗口渐隐")
- for i in range(80,0,-1):
- opacity = i/100
- print("opacity:",opacity)
- self.setWindowOpacity(opacity) # 设置窗口透明度
- self.repaint()
- QApplication.processEvents()
- sleep(0.05)
-
- self.fade_timer.stop()
- self.close()
-
-
- if __name__ == "__main__":
- import sys
- app = QApplication(sys.argv)
- msg = Msg()
- msg.show_msg("测试信息...")
- sys.exit(app.exec_())

Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。