如何用Python 3.9+在电脑屏幕上实时叠加动态更新的自定义数据
桌面实时自定义统计数据实现(Python 3.9+)

参考效果为动图中叠加的实时统计层,以下实现可以在桌面生成悬浮、置顶、透明的统计展示层,支持自定义任意动态数据。
依赖安装
执行以下命令安装所需库:
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
相关产品推荐
相关产品推荐

