Python:文本覆盖在所有窗口之上,包括 Linux 中的全屏

Posted

技术标签:

【中文标题】Python:文本覆盖在所有窗口之上,包括 Linux 中的全屏【英文标题】:Python: text overlay on top of all windows including fullscreen in Linux 【发布时间】:2017-02-02 09:28:32 【问题描述】:

我正在尝试用 python 编写一个简单的脚本,在所有窗口和全屏应用程序的顶部输出文本。

此脚本的目的是以与 Steam FPS 计数器工作类似的方式输出平均负载和可用内存(以及其他有用的统计数据)。

到目前为止,我尝试了 pygame,但据我所知,它只能写入自己的窗口。

据我所知,我需要直接写入帧缓冲区?

目标操作系统是带有 Nvidia 卡和 Xorg 的 Linux,但我希望它与硬件无关。

非常感谢!

【问题讨论】:

您无法写入帧缓冲区。 X11 是一种网络协议,没有可以访问的帧缓冲区。不过,您可能必须使用低级 x11 API。这并不简单。 【参考方案1】:

我正在尝试做同样的事情,到目前为止它有效 - 但我不确定全屏应用程序 - 使用 PyOsd: http://python-osd.sourcearchive.com/documentation/0.2.14-5.1/index.html

最简单的例子是

import pyosd
p=pyosd.osd()
p.display("Hello world!")

【讨论】:

谢谢!这样可行。该库有点笨重,但可以完成工作。它甚至可以在 3D 全屏应用程序中使用! 不客气!我很高兴它有帮助,很抱歉没有使用密码箱。您是否还尝试让 OSD 以每秒 20/30 帧(或更高)的速度更新? 这很好,但几秒钟内更新一次就足以了解事情的要点,特别是找出瓶颈在哪里。

以上是关于Python:文本覆盖在所有窗口之上,包括 Linux 中的全屏的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Python 在没有窗口的情况下在屏幕上显示文本

叠加在内联导航栏之上

当应用程序进入后台时显示覆盖所有内容的窗口

将 div 直接覆盖在兄弟 div 之上

关于SetWindowPos的窗口排序的问题!(高分)

学习python用啥软件