You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Python实现悬浮于窗口/桌面上方、不干扰下层操作的overlay绘制程序

实现Python桌面Overlay绘制程序的方案

你可以用PyQt5实现该需求,核心思路是创建一个全屏、无边框、背景透明的顶层窗口,同时设置窗口属性让鼠标事件穿透到下层窗口,就不会干扰下层内容的正常操作。

依赖安装

  • 首先安装依赖库:
    pip install pyqt5

最小可运行示例代码

import sys
from PyQt5.QtWidgets import QApplication, QWidget
from PyQt5.QtGui import QPainter, QColor, QPen
from PyQt5.QtCore import Qt, QRect

class OverlayWindow(QWidget):
    def __init__(self):
        super().__init__()
        # 窗口基础配置
        self.setWindowFlags(
            Qt.FramelessWindowHint  # 无边框
            | Qt.WindowStaysOnTopHint  # 始终置顶
            | Qt.Tool  # 不显示任务栏图标
            | Qt.WindowTransparentForInput  # 鼠标事件穿透,不拦截下层操作
        )
        self.setAttribute(Qt.WA_TranslucentBackground)  # 背景透明
        # 全屏覆盖
        screen_geo = QApplication.desktop().screenGeometry()
        self.setGeometry(screen_geo)

    def paintEvent(self, event):
        painter = QPainter(self)
        # 抗锯齿
        painter.setRenderHint(QPainter.Antialiasing)
        # 配置画笔:红色、2px粗细
        pen = QPen(QColor(255, 0, 0), 2)
        painter.setPen(pen)
        # 示例:绘制一个左上角100,100,宽300高200的红色矩形框
        painter.drawRect(QRect(100, 100, 300, 200))
        # 可在此处扩展绘制更多图形:方框、圆形、文字等

if __name__ == "__main__":
    app = QApplication(sys.argv)
    overlay = OverlayWindow()
    overlay.show()
    sys.exit(app.exec_())

功能说明

  • 运行程序后会在屏幕(100,100)位置显示一个红色的矩形边框,所有鼠标点击、拖动操作都会直接作用在该矩形下方的窗口上,完全不影响正常使用
  • 如果需要动态修改绘制内容,只需要修改paintEvent里的绘制逻辑,调用update()方法即可刷新界面
  • 如果不需要全局覆盖,仅需要覆盖指定窗口,可获取目标窗口的位置和大小,修改setGeometry的参数即可适配

内容的提问来源于stack exchange,提问作者Ame

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 12:54:04