我如何从Python脚本中最小化/最大化macOS中的窗口?
在Windows上,有一个win32 api(ShowWindow()
函数)可以做到这一点。我想要相应于macOS的等效方法。我希望能够通过脚本从窗口标题找到窗口,然后将其最小化或最大化。
这可行吗?我猜我需要使用pyobjc
模块。
我如何从Python脚本中最小化/最大化macOS中的窗口?
在Windows上,有一个win32 api(ShowWindow()
函数)可以做到这一点。我想要相应于macOS的等效方法。我希望能够通过脚本从窗口标题找到窗口,然后将其最小化或最大化。
这可行吗?我猜我需要使用pyobjc
模块。
可能有多种方法来实现它,其中一种是枚举正在运行的应用程序,然后枚举应用程序中的窗口。
我这里将展示应用程序的方法。
from AppKit import NSApplication, NSApp, NSWorkspace
from Quartz import kCGWindowListOptionOnScreenOnly, kCGNullWindowID, CGWindowListCopyWindowInfo
workspace = NSWorkspace.sharedWorkspace()
activeApps = workspace.runningApplications()
for app in activeApps:
if app.isActive():
options = kCGWindowListOptionOnScreenOnly
windowList = CGWindowListCopyWindowInfo(options,
kCGNullWindowID)
for window in windowList:
if window['kCGWindowOwnerName'] == app.localizedName():
print(window.getKeys_)
break
break
这将找到当前聚焦的应用程序,您可以根据标题或其他条件更改逻辑。
找到app
之后,您可以使用以下方式最小化它:
app.hide()
您可以使用以下方式再次显示应用程序:
from Cocoa import NSApplicationActivateIgnoringOtherApps, NSApplicationActivateAllWindows
app.unhide()
app.activateWithOptions_(NSApplicationActivateIgnoringOtherApps)
# or
app.activateWithOptions_(NSApplicationActivateIgnoringOtherApps | NSApplicationActivateAllWindows)
为了解决这个问题,我参考了很多线程。
如何从Swift中的CGWindowID获取窗口引用(CGWindow、NSWindow或WindowRef)?
安装Quartz模块时出现“找不到文件:'requirements.txt'”错误
如何在没有辅助功能API的情况下获取Mac OS中另一个应用程序窗口的标题、位置和大小?