gpt4 book ai didi

python - 如何在Python中更改光标图像

转载 作者:行者123 更新时间:2023-12-01 07:56:26 24 4
gpt4 key购买 nike

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

我尝试使用 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)

最佳答案

不建议更改系统光标,因为程序退出后必须恢复光标,如果程序失败,则用户将陷入自定义光标,必须从系统设置重置光标。

为了好奇,可以使用SetSystemCursor来完成,例如

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

参见documentation对于 OCR_NORMAL 和其他光标常量。

您可以尝试保存旧的光标并恢复它,同样,如果您的程序异常退出,此方法将失败。

import win32con
import win32api
import win32gui
import ctypes
import time
import atexit

#save system cursor, before changing it
cursor = win32gui.LoadImage(0, 32512, win32con.IMAGE_CURSOR,
0, 0, win32con.LR_SHARED)
save_system_cursor = ctypes.windll.user32.CopyImage(cursor, win32con.IMAGE_CURSOR,
0, 0, win32con.LR_COPYFROMRESOURCE)

def restore_cursor():
#restore the old cursor
print("restore_cursor");
ctypes.windll.user32.SetSystemCursor(save_system_cursor, 32512)
ctypes.windll.user32.DestroyCursor(save_system_cursor);

#Make sure cursor is restored at the end
atexit.register(restore_cursor)

#change system cursor
cursor = win32gui.LoadImage(0, "file.cur", win32con.IMAGE_CURSOR,
0, 0, win32con.LR_LOADFROMFILE);
ctypes.windll.user32.SetSystemCursor(cursor, 32512)
ctypes.windll.user32.DestroyCursor(cursor);

time.sleep(3)
exit

关于python - 如何在Python中更改光标图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55954005/

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