次のように、 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 バインディングを使用してプログラムでウィンドウをスムーズにスクロールする方法はありますか?