如何在Python中更改光标图像

时间:2019-05-02 13:52:27

标签: python winapi win32gui win32con

我想在程序运行时更改光标图像(屏幕上的任何地方)。

我尝试使用win32gui加载图像,然后使用win32api更改光标图像,但是出了点问题,并且光标没有显示 我的光标图像是map.cur

import win32api
import time
import win32gui
import win32con

x = win32gui.LoadImage(0,'map.cur',win32con.IMAGE_CURSOR,0,0,win32con.LR_LOADFROMFILE)
win32api.SetCursor(x)

time.sleep(5)

1 个答案:

答案 0 :(得分:0)

不建议更改系统光标。出于好奇,可以使用SetSystemCursor,例如

ctypes.windll.user32.SetSystemCursor(hcursor, 32512) #OCR_NORMAL

有关OCR_NORMAL和其他光标常量,请参见documentation

我完全不建议在python上使用此命令,因为很难恢复游标,因此除非用户通过系统设置更改游标,否则用户将被新游标卡住。您可以尝试保存并恢复旧光标,但是如果程序异常退出,此方法将失败。

hold = win32gui.LoadImage(0, 32512, win32con.IMAGE_CURSOR, 
                          0, 0, win32con.LR_SHARED )
hsave = ctypes.windll.user32.CopyImage(hold, win32con.IMAGE_CURSOR, 
                                       0, 0, win32con.LR_COPYFROMRESOURCE)
hnew = win32gui.LoadImage(0, 'file.cur', 
                             win32con.IMAGE_CURSOR, 0, 0, win32con.LR_LOADFROMFILE);
ctypes.windll.user32.SetSystemCursor(hcursor, 32512)
time.sleep(5)

#restore the old cursor
ctypes.windll.user32.SetSystemCursor(hsave, 32512)