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:
正好需要这个功能,非常感谢博主,辛苦了