gpt4 book ai didi

python - 在 Python 中使用 Quartz.CoreGraphics 平滑滚动

转载 作者:太空宇宙 更新时间:2023-11-04 06:15:12 26 4
gpt4 key购买 nike

我正在使用 Quartz Event Services发送鼠标滚轮事件,如下所示:

from Quartz.CoreGraphics import CGEventCreateScrollWheelEvent, CGEventPost, kCGHIDEventTap

def scroll_wheel_up(num_times):
for _ in xrange(num_times):
# Scroll up 1 pixel
event = CGEventCreateScrollWheelEvent(None, 0, 1, 1)
CGEventPost(kCGHIDEventTap, event)

这可行,但非常不稳定 - 它跳跃而不是滚动。

我尝试了一些方法来使其平滑,例如在向上滚动后以较慢的速度向下滚动。我还尝试“减速”滚动速度:

def scroll_wheel_up(num_times):
for i in xrange(1, num_times):
multiplier = 1 - (float(i) / num_times)
speed = 4 * multiplier
event = CGEventCreateScrollWheelEvent(None, 0, 1, speed)
CGEventPost(kCGHIDEventTap, event)

都没有成功。有什么方法可以使用 Quartz 或 PyObjC 绑定(bind)以编程方式平滑地滚动窗口吗?

最佳答案

发布后我立即想到在滚动事件之间添加一个小的延迟:

def scroll_wheel_up(num_times):
for i in xrange(1, num_times):
time.sleep(.005)
multiplier = 1 - (float(i) / num_times)
speed = 4 * multiplier
event = CGEventCreateScrollWheelEvent(None, 0, 1, speed)
CGEventPost(kCGHIDEventTap, event)

这更顺畅,而且效果令我满意。如果有人有其他方法可以做到这一点,我很乐意听到!

关于python - 在 Python 中使用 Quartz.CoreGraphics 平滑滚动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16122814/

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