1
如何在使用Xlib的python应用程序中为根窗口(或任何其他窗口)设置光标?Python xlib更改光标
我有一个display
和window
(根窗口)的实例。 使用C绑定;我可以用我用XCreatePixmapCursor创建的游标使用XDefineCursor。我如何做与python绑定相同的?
我希望能够使用默认光标或自定义光标。
如何在使用Xlib的python应用程序中为根窗口(或任何其他窗口)设置光标?Python xlib更改光标
我有一个display
和window
(根窗口)的实例。 使用C绑定;我可以用我用XCreatePixmapCursor创建的游标使用XDefineCursor。我如何做与python绑定相同的?
我希望能够使用默认光标或自定义光标。
有你要记住,当你需要找到的python-Xlib的任何等价的libx11功能的两件事情:
XCreatePixmapCursor()
转换为pixmap.create_cursor()
。XDefineCursor()
,你会发现它实际上是调用XChangeWindowAttributes()
,这意味着你想在python-xlib中使用win.change_attributes()
。如果你想使用XCreateFontCursor()
使用光标光标字体,第二条准又适用:它调用的引擎盖,这相当于font.create_glyph_cursor()
下XCreateGlyphCursor()
。
把所有的一起,这里就是你会得到什么:
# Create font cursor
font = display.open_font('cursor')
cursor = font.create_glyph_cursor(font, Xlib.Xcursorfont.crosshair, Xlib.Xcursorfont.crosshair+1, (65535, 65535, 65535), (0, 0, 0))
# Use PIL to load a cursor image and ensure that it's 1-bit as required
im = Image.open('cursor.png').convert('1')
w, h = im.size
# Create pixmap cursor
mask = win.create_pixmap(w, h, 1)
gc = mask.create_gc(foreground=0, background=1)
mask.put_pil_image(gc, 0, 0, im)
cursor = mask.create_cursor(mask, (0, 0, 0), (65535, 65535, 65535), 0, 0)
# Change cursors for given windows
win.change_attributes(cursor=cursor)
如果你想知道关于+1
的呼叫的意义font.create_glyph_cursor()
,这是在source code of XCreateFontCursor()
解释。