如何使用Xlib在python应用程序中为根窗口(或任何其他窗口)设置光标?
我有一个display
和window
(根窗口)的实例。
使用C绑定;我可以将XDefineCursor与我用XCreatePixmapCursor创建的游标一起使用。我如何对python绑定做同样的事情?
我希望能够使用默认光标或自定义光标。
答案 0 :(得分:0)
当您需要找到与任何libX11函数等效的python-xlib时,您需要记住两件事:
XCreatePixmapCursor()
会转换为pixmap.create_cursor()
。XDefineCursor()
,您会看到它实际上正在调用XChangeWindowAttributes()
,这意味着您将要在python中使用win.change_attributes()
-xlib。如果您想使用XCreateFontCursor()
来使用光标字体中的光标,则第二条准则会再次适用:它在引擎盖下调用XCreateGlyphCursor()
,对应{{1} }。
把所有这些放在一起,这是你得到的:
font.create_glyph_cursor()
如果您对# 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
的重要性感到疑惑,请在source code of XCreateFontCursor()
中说明。