Как изменить курсор мыши на Mac с помощью Python?

Я хочу изменить курсор мыши на лазерную указку, когда кто-то нажимает кнопку с помощью скрипта Python. Как это сделать на MAC?

В окнах я сделал так, чтобы сделать то же самое

hnew = win32gui.LoadImage(0,  resource_path('laser.cur'), win32con.IMAGE_CURSOR, 0, 0, win32con.LR_LOADFROMFILE)
ctypes.windll.user32.SetSystemCursor(hnew, 32512)

Но он не поддерживается на Mac, так как это библиотека для конкретного окна.


person Shraddha Gami    schedule 29.10.2020    source источник


Ответы (2)


Вы можете выполнять команды/скрипты bash на python, используя os.system(), а затем выполнять команды модификации курсора мыши, как показано ниже.

Какой терминал команду, которую я могу использовать для завершения процесса курсора/мыши на MacOSX?

person min20120907    schedule 29.10.2020
comment
Я могу запустить скрипт bash с помощью os.system. Но есть ли способ заменить курсор мыши каким-либо другим файлом курсора? Я вижу больше скриптов по изменению размера курсора, но не по замене курсора. - person Shraddha Gami; 30.10.2020
comment
Я думаю, вы можете взглянуть на этот поток, чтобы проверить, как увеличить курсор программным способом, а затем реализовать его в os.system(). apple.stackexchange.com/questions/ 298550/ - person min20120907; 09.11.2020

Вам нужен доступ к платформам Cocoa, что представляется возможным с помощью этой библиотеки (не проверено). В Cocoa вызываемым объектом является NSCursor. В Objective-c вы устанавливаете курсор следующим образом:

[NSCursor.arrowCursor set]

Вы также можете использовать пару команд для изменения курсора и сброса его после действия:

[NSCursor.pointingHandCursor push]
// Do an action
[NSCursor pop]

Чтобы создать пользовательский курсор, вы используете NSImage, который вы создаете из пути (здесь я делаю это с изображением в формате PDF для поддержки экрана с высоким разрешением):

NSString * pathToAnImage = "A/B/C.pdf"
NSImage * image = [NSImage multiRepresentationImageFromPDF: pathToAnImage withMaxScaleFactor:4];
NSPoint hotSpot = NSMakePoint(8, 8); //the relative position within the image interpreted as the cursor location

NSCursor * customCursor = [[NSCursor alloc] initWithImage:image hotSpot:hotSpot]]

Затем вы можете использовать его как любой другой системный курсор.

person dspr    schedule 29.10.2020
comment
Это позволит мне заменить курсор мыши специальным лазерным курсором? - person Shraddha Gami; 29.10.2020