gpt4 book ai didi

python - 在 Python xlib 中绘制窗口边框

转载 作者:太空狗 更新时间:2023-10-30 01:16:52 24 4
gpt4 key购买 nike

我正在开发一个使用 python 的 xlib 绑定(bind)​​编写的窗口管理器,并且我(最初)试图以更 pythonic 的方式模仿 dwm 的行为。我已经得到了很多我需要的东西,但是我在使用 X 的内置窗口边框功能来指示窗口焦点时遇到了问题。

假设我有一个 Xlib 窗口类的实例并且我正在正确阅读文档,这应该做我想做的事情(至少现在)——将一个预先存在的窗口的窗口边框设置为花哨的颜色并将边框宽度设置为 2px。

def set_active_border(self, window):
border_color = self.colormap.alloc_named_color(\
"#ff00ff").pixel
window.change_attributes(None,border_pixel=border_color,
border_width = 2 )
self.dpy.sync()

但是,我从中一无所获 - 我可以添加打印语句来证明我的程序确实在运行与事件关联的回调函数,但我在边框上绝对没有颜色变化。谁能确定我在这里到底缺少什么?如果有帮助的话,我可以粘贴一个更完整的例子。我不确定它是否会这样做,因为这是处理边界的唯一位。

最佳答案

看起来这是完整的 PEBKAC。我找到了答案。基本上,我是这样做的:

def set_active_border(self, window):
border_color = self.colormap.alloc_named_color(
"#ff00ff"
).pixel
window.configure(border_width=2)
window.change_attributes(
None,
border_pixel=border_color,
border_width=2)
self.dpy.sync()

显然,这让 X 很困惑,以至于它什么都不做。我偶然发现的解决方案是从 window.change_attributes() 调用中删除 border_width 部分,如下所示:

def set_active_border(self, window):
border_color = self.colormap.alloc_named_color(
"#ff00ff"
).pixel
window.configure(border_width=2)
window.change_attributes(
None,
border_pixel=border_color
)
self.dpy.sync()

我希望这对以后的人有所帮助!

关于python - 在 Python xlib 中绘制窗口边框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10263217/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com