import getpass,socket,sys,win32api,time
from PyQt5.QtCore import Qt
from PyQt5.QtGui import QFont, QPainter, QColor
from PyQt5.QtWidgets import QWidget, QApplication
# 将导入的文字进行重复生成,实现全屏覆盖
def get_replicate_text(text):
i, space, str1, str2 = 0, 70, "", ""
while (i <= 5):
str1 = str1 + text + " " * space
i = i + 1
str2 = " " * space + str1 + "\n\n\n\n\n\n\n"
str1 = str1 + "\n\n\n\n\n\n\n"
str1 = (str1 + str2) * 7
return str1
# 水印重复文字设置,设置为计算机名
mytext = get_replicate_text(socket.getfqdn(socket.gethostname())+ " " + time.strftime('%Y%m%d' , time.localtime()) + " " + getpass.getuser())
# 获取当前分辨率
width = win32api.GetSystemMetrics(0)
height = win32api.GetSystemMetrics(1)
# 窗体部分
class Window(QWidget):
def __init__(self):
super().__init__()
# 鼠标透传属性
self.setAttribute(Qt.WA_TransparentForMouseEvents);
# 窗口置顶、无边框窗口、无状态栏
self.setWindowFlags(Qt.WindowStaysOnTopHint | Qt.FramelessWindowHint | Qt.Tool)
# 设置禁用,不可互动
self.setEnabled(False)
# 设置窗口大小
self.setGeometry(0, 0, width, height)
# 设置透明度
self.setWindowOpacity(0.22)
# 设置背景透明
self.setAttribute(Qt.WA_TranslucentBackground)
# 显示窗口
self.show()
# 绘画事件
def paintEvent(self, QPaintEvent):
# 实例化绘画工具
qp = QPainter()
# 在开始窗口上绘画
qp.begin(self)
# 设置笔刷颜色(字体颜色)
qp.setBrush(QColor(160, 160, 160))
# 设置字体
qp.setFont(QFont('Calibri', 15))
# 设置倾斜角度
qp.rotate(-45)
# 绘画文本(因为倾斜了,所以绘画矩形也会跟着倾斜,这里吧长宽都扩大了防止有些地方画不到的情况)
qp.drawText(-height, 0, width * 2, height * 2, Qt.AlignLeft,mytext)
# 结束绘画
qp.end()
# 入口函数
if __name__ == "__main__":
app = QApplication(sys.argv)
Window = Window()
sys.exit(app.exec_())
Kent says:
正好需要这个功能,非常感谢博主,辛苦了