OS X 中的 Python : Detect multiple monitors and move application window to specific monitor

标签 python macos monitor pyobjc appleevents

问题:有没有一种方法可以让 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)

最佳答案

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

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

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

关于OS X 中的 Python : Detect multiple monitors and move application window to specific monitor,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37732063/

相关文章:

mysql - 如何从监控串口获取信息到Linino?

c# - 如何使用 .NET 关闭特定监视器?

python - 取决于类实例中的值

python - 没有名为 'pip._internal' 的模块; 'pip' 不是包

python - 如何检查python字典内的内部字典中是否存在键?

macos - 无法在 Mac 上安装 sbt

python - Sqlalchemy:.all() 的目的

macos - 将 macOS 更新到 Sierra 后,apache 的旧日志消失了

objective-c - 如何在命令行应用程序中创建安全的密码输入字段?

forms - 在单显示器和多显示器系统上放置表单和对话框的最佳实践是什么?