2016-06-09 17 views
1

Frage: Gibt es eine Möglichkeit, Python bei der Ausführung des Codes in OS X erkennen zu lassen, wenn mehr als ein Monitor aktiv ist? Ist es dann möglich, ein bestimmtes OS X-Anwendungsfenster auf einen dieser Monitore zu verschieben, indem Sie?Python in OS X: Mehrere Monitore erkennen und Anwendungsfenster auf bestimmten Monitor verschieben


FYI: Ich habe früher die Lage gewesen, Carbon zu verwenden, um ein spezifisches Anwendungsfenster zu aktivieren, wie in dem unten stehenden Code gesehen. Ich bin mir nicht bewusst, ob es die oben gesuchten Fähigkeiten hat.

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) 
+0

Sie können dies mit PyObjC tun. Carbon ist veraltet. – pvg

Antwort

2

Um Monitore zu erkennen, können Sie NSScreen.screens() verwenden. Sie können dann wahrscheinlich Ihre NSWindow innerhalb des Ziels NSScreen 's visibleFrame positionieren.

Zumindest würde das mit Ihren eigenen Anwendungsfenstern funktionieren - ich bin mir nicht sicher, wie man die Fenster einer anderen Anwendung verschiebt oder ob es sogar über die Cocoa API möglich ist.

Für diesen bestimmten Anwendungsfall besteht ein möglicher Ansatz darin, stattdessen AppleScript zu verwenden (z. B. Moving finder window from one display to another oder Positioning a window with AppleScript using dual monitors).