需要添加依赖
pip install PyQt5
完整代码
import sys
import random
from PyQt5.QtWidgets import QApplication, QWidget, QLabel, QVBoxLayout
from PyQt5.QtCore import QTimer, Qt
from PyQt5.QtGui import QColor, QPalette
messages = [
"晨曦初染窗纱色,先念睿睿始心安。",
"晚风携香穿竹院,为睿睿书相思笺。",
"樱花如雪落肩头,愿与睿睿共春秋。",
"月光轻洒旧书案,写尽睿睿名字暖。",
"蝉鸣切切夏夜长,思睿睿兮梦亦香。",
"寒雪覆径印履痕,盼引睿睿赏冬晨。",
"雨敲窗棂韵悠悠,默念睿睿解清愁。",
"晚霞铺红河岸边,诗行皆绕睿睿旋。",
"晨露沾花娇欲滴,欲赠睿睿表心迹。",
"星河浩瀚缀苍穹,纸鹤遥飞觅睿睿。",
"春风拂过麦浪翻,望睿睿来此凭栏。",
"暮色渐浓灯影柔,温茶待睿睿晚安。",
"落叶飘飞似浅唱,如闻睿睿笑声扬。",
"银河横亘夜空中,指星遥赠睿睿瞳。",
"花香暗度小轩窗,睿睿是我心头光。",
"冬阳暖透旧藤椅,思睿睿在更惬意。",
"蛙鸣唤醒一池春,念睿睿名语最真。",
"夜风轻拂鬓丝柔,月如睿睿暖心头。",
"晨光吻透玫瑰花,欲插睿睿窗阁下。",
"灯火阑珊暮色沉,盼睿睿至共晨昏。"
]
# 淡暖色调列表(RGB)
warm_colors = [
(255, 239, 213), # 浅橙
(255, 228, 196), # 浅米
(255, 222, 173), # 浅黄
(255, 182, 193), # 浅粉
(255, 204, 153), # 浅橙黄
(255, 250, 205), # 柠檬黄
(255, 245, 238), # 雪白暖色
(255, 228, 225), # 薄雾玫瑰
(255, 218, 185), # 桃色
(255, 160, 122), # 浅珊瑚
(255, 236, 139), # 浅金黄
(255, 215, 180), # 浅杏色
(255, 223, 211), # 浅橙粉
(255, 240, 245), # 浅紫粉
(255, 250, 240), # 浅米白
(255, 239, 213), # 浅橙
(255, 228, 181), # 浅黄棕
(255, 192, 203), # 粉色
(255, 228, 225) # 薄雾玫瑰
]
class Popup(QWidget):
def __init__(self, message, color):
super().__init__()
self.setWindowFlags(Qt.WindowStaysOnTopHint | Qt.Tool)
self.setFixedSize(900, 200)
self.setWindowTitle("xxx")
label = QLabel(message, self)
label.setStyleSheet("font-size: 50px; font-weight: bold; color: #333; font-family: 微软雅黑;")
label.setAlignment(Qt.AlignCenter)
layout = QVBoxLayout()
layout.addWidget(label, alignment=Qt.AlignmentFlag.AlignCenter)
self.setLayout(layout)
palette = QPalette()
palette.setColor(QPalette.Window, QColor(*color))
self.setPalette(palette)
self.setAutoFillBackground(True)
class PopupGenerator:
def __init__(self):
self.count = 0
self.max_count = 50
self.timer = QTimer()
self.timer.timeout.connect(self.show_popup)
self.timer.start(600)
def show_popup(self):
if self.count < self.max_count:
msg = messages[self.count%len(messages)]
color = warm_colors[self.count%len(warm_colors)]
popup = Popup(msg, color)
# 获取屏幕尺寸并限制弹窗位置,确保不会出现在屏幕外
screen = QApplication.primaryScreen().geometry()
max_x = screen.width() - popup.width()
max_y = screen.height() - popup.height()
x = random.randint(0, max_x)
y = random.randint(0, max_y)
popup.move(x, y)
popup.show()
# 保持弹窗引用,防止被垃圾回收
QApplication.instance().activePopups.append(popup)
self.count += 1
else:
self.timer.stop()
if __name__ == "__main__":
app = QApplication(sys.argv)
app.activePopups = []
generator = PopupGenerator()
sys.exit(app.exec_())


1万+

被折叠的 条评论
为什么被折叠?



