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

如何用Python 3.9+在电脑屏幕上实时叠加动态更新的自定义数据

桌面实时自定义统计数据实现(Python 3.9+)

A.I. learns to drive on a pipe

参考效果为动图中叠加的实时统计层,以下实现可以在桌面生成悬浮、置顶、透明的统计展示层,支持自定义任意动态数据。


依赖安装

执行以下命令安装所需库:

pip install pyqt5 psutil

完整实现代码

import sys
import psutil
from PyQt5.QtWidgets import QApplication, QLabel, QWidget, QMenu, QAction
from PyQt5.QtCore import Qt, QTimer
from PyQt5.QtGui import QFont, QMouseEvent

class FloatingStatsWindow(QWidget):
    def __init__(self):
        super().__init__()
        # 窗口基础配置
        self.setWindowFlags(
            Qt.FramelessWindowHint |  # 无边框
            Qt.WindowStaysOnTopHint | # 始终置顶
            Qt.SubWindow              # 任务栏不显示图标
        )
        self.setAttribute(Qt.WA_TranslucentBackground) # 背景透明
        self.resize(280, 120) # 窗口大小
        self.move(100, 100) # 初始位置

        # 拖拽相关变量
        self.drag_pos = None

        # 展示文本标签
        self.stats_label = QLabel(self)
        self.stats_label.setStyleSheet("color: #00FF00;") # 绿色文字,可自行修改颜色
        self.stats_label.setFont(QFont("Consolas", 12, QFont.Bold)) # 字体设置
        self.stats_label.setAlignment(Qt.AlignLeft | Qt.AlignVCenter)
        self.stats_label.move(10, 10)

        # 定时刷新统计数据,1秒刷新一次,可自行调整间隔
        self.timer = QTimer(self)
        self.timer.timeout.connect(self.update_stats)
        self.timer.start(1000)

        # 右键退出菜单
        self.setContextMenuPolicy(Qt.CustomContextMenu)
        self.customContextMenuRequested.connect(self.show_context_menu)

    def update_stats(self):
        # --------------------------
        # 此处可自定义统计内容
        # --------------------------
        # 示例统计:CPU使用率、内存使用率、磁盘使用率
        cpu_usage = psutil.cpu_percent(interval=0)
        mem_usage = psutil.virtual_memory().percent
        disk_usage = psutil.disk_usage('/').percent

        # 拼接展示文本,支持换行
        display_text = f"实时统计数据\n" \
                       f"CPU 使用率: {cpu_usage:>5.1f}%\n" \
                       f"内存使用率: {mem_usage:>5.1f}%\n" \
                       f"磁盘使用率: {disk_usage:>5.1f}%"
        self.stats_label.setText(display_text)
        self.stats_label.adjustSize() # 自适应文本大小

    def show_context_menu(self, pos):
        menu = QMenu(self)
        exit_action = QAction("退出", self)
        exit_action.triggered.connect(QApplication.quit)
        menu.addAction(exit_action)
        menu.exec_(self.mapToGlobal(pos))

    # 实现窗口拖拽功能
    def mousePressEvent(self, event: QMouseEvent):
        if event.button() == Qt.LeftButton:
            self.drag_pos = event.globalPos() - self.frameGeometry().topLeft()
            event.accept()

    def mouseMoveEvent(self, event: QMouseEvent):
        if event.buttons() == Qt.LeftButton and self.drag_pos is not None:
            self.move(event.globalPos() - self.drag_pos)
            event.accept()

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

自定义修改说明

  • 调整刷新频率:修改self.timer.start(1000)中的数值,单位为毫秒,比如2000就是2秒刷新一次
  • 修改文字样式:调整self.stats_label.setStyleSheet和setFont中的参数,可以修改颜色、字体、字号
  • 替换统计内容:修改update_stats方法中的内容,可以替换为任意你需要展示的动态数据,比如网速、当前运行程序时长、自定义业务统计等
  • 调整窗口大小:修改self.resize(280, 120)中的宽高数值

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 05:09:00