【问题标题】:Python in OS X: Detect multiple monitors and move application window to specific monitorOS X 中的 Python:检测多个监视器并将应用程序窗口移动到特定监视器
【发布时间】:2017-09-02 06:45:00
【问题描述】:

问题:如果有多个监视器处于活动状态,有没有办法让 Python 在 OS X 中运行代码时进行检测?那么,是否可以通过选择将特定的 OS X 应用程序窗口移动到其中一个监视器?


仅供参考:我之前可以使用Carbon 来激活特定的应用程序窗口,如下面的代码所示。我不知道它是否具有上述功能。

from Carbon import AppleEvents
from Carbon import AE

window_target = AE.AECreateDesc(AppleEvents.typeApplicationBundleID, "org.mozilla.FireFox")
window_activate = AE.AECreateAppleEvent('misc', 'actv', window_target, AppleEvents.kAutoGenerateReturnID, AppleEvents.kAnyTransactionID)
window_activate.AESend(AppleEvents.kAEWaitReply, AppleEvents.kAENormalPriority, AppleEvents.kAEDefaultTimeout)

【问题讨论】:

  • 你可以用 PyObjC 做到这一点。碳已弃用。

标签: python macos monitor pyobjc appleevents


【解决方案1】:

要检测监视器,您可以使用NSScreen.screens()。然后,您可能只需将您的NSWindow 定位在目标NSScreenvisibleFrame 中。

至少这适用于您自己的应用程序窗口——我不确定如何移动不同应用程序的窗口,或者是否可以通过 Cocoa API。

对于该特定用例,一种可能的方法是改用 AppleScript(例如,Moving finder window from one display to anotherPositioning a window with AppleScript using dual monitors)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-09-07
    • 1970-01-01
    • 2015-11-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多