import sys
import datetime
from PyQt5.QtWidgets import QApplication, QWidget, QLabel
from PyQt5.QtGui import QPainter, QBrush, QColor
from PyQt5.QtCore import Qt, QPoint, QTimer
class CircularWindow(QWidget):
def __init__(self):
super().__init__()
self.offset = None # 记录鼠标按下时的位置,用于计算鼠标移动的距离
self.timer = QTimer(self) # 创建定时器
self.timer.timeout.connect(self.updateTime) # 定时器到时时执行updateTime方法
self.timer.start(1000) # 定时器每1秒触发一次
# 设置窗口属性
self.setWindowFlags(Qt.FramelessWindowHint) # 去除窗口状态栏
self.setAttribute(Qt.WA_TranslucentBackground) # 设置窗口背景为透明
# 设置窗口大小和位置
self.setGeometry(100, 100, 100, 100)
# 添加标签
self.label = QLabel(self)
self.label.setStyleSheet("font-size: 15px; color: white;")
self.label.setAlignment(Qt.AlignCenter)
self.label.setGeometry(0, 0, 100, 100)
def paintEvent(self, event):
painter = QPainter(self)
painter.setRenderHint(QPainter.Antialiasing, True) # 设置抗锯齿渲染
# 绘制圆形背景
brush = QBrush(QColor("#3DAEE9"))
painter.setBrush(brush)
painter.drawEllipse(0, 0, 100, 100)
def mousePressEvent(self, event):
if event.button() == Qt.LeftButton:
self.offset = event.pos() # 记录鼠标按下时的位置
def mouseMoveEvent(self, event):
if self.offset is not None:
# 计算鼠标移动的距离
delta = QPoint(event.pos() - self.offset)
# 移动窗口
self.move(self.pos() + delta)
def mouseReleaseEvent(self, event):
if event.button() == Qt.LeftButton:
self.offset = None # 释放鼠标,清空偏移值
def updateTime(self):
now = datetime.datetime.now() # 获取当前时间
target = now.replace(hour=17, minute=30, second=0, microsecond=0) # 设置目标时间为下午5:30
if now >= target:
self.label.setText("下班了")
else:
remaining_time = target - now # 计算剩余时间
minutes = remaining_time.seconds // 60 # 计算剩余分钟数
if minutes != 0:
self.label.setText("距离下班还有\n"+str(minutes) + " 分钟")
else:
self.label.setText("距离下班还有\n"+str(remaining_time.seconds) + "秒")
if __name__ == '__main__':
app = QApplication(sys.argv)
window = CircularWindow()
window.show()
sys.exit(app.exec_())
运行后显示球形悬浮窗,计算现在时间到17时30分的剩余时间,超过17时30分显示下班了。
不明原因,目前只支持1920*1080的分辨率其他分辨率会显示错误。
摸鱼的时候写的,请自行安装python3.9及以下的版本,同时安装pyqt。
提供一个已经打包好的exe版本,https://download.csdn.net/download/m0_55317949/87865759
效果图