我正在使用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 绑定以编程方式平滑滚动窗口?