gpt4 book ai didi

python - 使用 python 在 Windows 中更改鼠标指针速度

转载 作者:行者123 更新时间:2023-11-28 22:26:04 25 4
gpt4 key购买 nike

我使用的是Windows10系统。

我有一个 Tkinter Canvas ,上面绘制了一个图像。当鼠标悬停在 Canvas 上时,有什么办法可以减慢鼠标指针的速度吗?我已经查看了 this linkthis link但答案似乎不稳定..

更具体地说,是否可以在普通 Python/Tkinter 中降低鼠标指针速度?

最佳答案

在windows系统上你可以使用native SystemParametersInfo改变鼠标指针的速度。可以通过 ctype 实现,它是 Python 标准库的一部分(它算作“普通”解决方案吗?)。

看看这个片段:

import ctypes

try:
import tkinter as tk
except ImportError:
import Tkinter as tk


def change_speed(speed=10):
# 1 - slow
# 10 - standard
# 20 - fast
set_mouse_speed = 113 # 0x0071 for SPI_SETMOUSESPEED
ctypes.windll.user32.SystemParametersInfoA(set_mouse_speed, 0, speed, 0)


def proper_close():
change_speed()
root.destroy()

root = tk.Tk()
root.protocol('WM_DELETE_WINDOW', proper_close)
tk.Button(root, text='Slow', command=lambda: change_speed(1)).pack(expand=True, fill='x')
tk.Button(root, text='Standard', command=change_speed).pack(expand=True, fill='x')
tk.Button(root, text='Fast', command=lambda: change_speed(20)).pack(expand=True, fill='x')
root.mainloop()

但是如果我们的“标准”速度不等于 10 怎么办?没问题!看看这个片段:

import ctypes

try:
import tkinter as tk
except ImportError:
import Tkinter as tk


def change_speed(speed):
# 1 - slow
# 10 - standard
# 20 - fast
set_mouse_speed = 113 # 0x0071 for SPI_SETMOUSESPEED
ctypes.windll.user32.SystemParametersInfoA(set_mouse_speed, 0, speed, 0)


def get_current_speed():
get_mouse_speed = 112 # 0x0070 for SPI_GETMOUSESPEED
speed = ctypes.c_int()
ctypes.windll.user32.SystemParametersInfoA(get_mouse_speed, 0, ctypes.byref(speed), 0)

return speed.value


def proper_close():
change_speed(standard_speed)
root.destroy()


root = tk.Tk()
root.protocol('WM_DELETE_WINDOW', proper_close)
root.minsize(width=640, height=480)

standard_speed = get_current_speed()

safe_zone = tk.LabelFrame(root, text='Safe Zone', bg='green')
slow_zone = tk.LabelFrame(root, text='Slow Zone', bg='red')

safe_zone.pack(side='left', expand=True, fill='both')
slow_zone.pack(side='left', expand=True, fill='both')

slow_zone.bind('<Enter>', lambda event: change_speed(1))
slow_zone.bind('<Leave>', lambda event: change_speed(standard_speed))

root.mainloop()

换句话说 - 这根本不是一项艰巨的任务。我们可以自由获取/设置鼠标速度,无需在注册表处爬行,也无需火箭科学计算!

有关 SystemParametersInfo 的更多信息,您可以在 MSDN 上找到.

关于python - 使用 python 在 Windows 中更改鼠标指针速度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45100234/

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