如何使用Python的Xlib将文本写入根窗口?

问题描述 投票:3回答:1

我正在使用dwm窗口管理器运行Debian 10稳定的x64系统,并且正在使用Python 3.7.3。从some example codedraw_text method itself可以看出,我应该能够在根窗口上使用如下代码绘制文本:

draw_text

此代码运行无错误,但未显示任何文本。我还尝试了不同的坐标,但没有任何运气。我的根窗口背景只是默认的黑色,因此我不认为文本不会显示出来,因为我将前景像素的颜色设置为白色。

python xlib
1个回答
0
投票

您的代码应该在根窗口上绘制文本是正确的。您只需要:

  • 确保您的背景确实是根窗口(#!/usr/bin/env python3 import Xlib import Xlib.display display = Xlib.display.Display() screen = display.screen() root = screen.root gc = root.create_gc(foreground = screen.white_pixel, background = screen.black_pixel) root.draw_text(gc, 1, 1, b"Hello, world!") 很好)
  • 再次检查坐标:(i)默认情况下,如果xwininfo显示顶部栏,则可能会隐藏文本。或者,如果您还有其他窗口(例如,终端)位于顶部,则只需按[Alt] + b即可切换栏(ii),您将看不到文本。
  • 最后执行XFlush。没有它,请求将保留在客户端中。

此处可用的代码(Gentoo amd64 / desktop / stable,dwm-6.2,python-3.6.9):

dwm

[如果其他窗口重叠或刷新该点,则文本将消失。文本将一直保留到,例如,您将一个窗口移到上方(擦除它),或者切换到另一个具有覆盖这些坐标的窗口的dwm-Tab时。 ( #!/usr/bin/env python3 import Xlib import Xlib.display display = Xlib.display.Display() screen = display.screen() root = screen.root gc = root.create_gc(foreground = screen.white_pixel, background = screen.black_pixel) root.draw_text(gc, 100, 100, b"Hello, world!") # changed the coords more towards the center display.flush() # To actually send the request to the server 循环可以重新出现,只要不在其他窗口下方即可。)

© www.soinside.com 2019 - 2024. All rights reserved.