【问题标题】:How can I minimize/maximize windows in macOS with the Cocoa API from a Python script?如何使用 Python 脚本中的 Cocoa API 最小化/最大化 macOS 中的窗口?
【发布时间】:2025-12-23 00:35:07
【问题描述】:

如何通过 Python 脚本最小化/最大化 ma​​cOS 中的窗口? 在 Windows 上,有一个 win32 api(ShowWindow() 函数)可以做到这一点。我想要 macOS 等价物。我想让一个脚本能够从它的标题中找到一个窗口,然后最小化或最大化它。

这可能吗?我假设我需要为此使用pyobjc 模块。

【问题讨论】:

标签: python macos cocoa pyobjc


【解决方案1】:

可能有不同的方法可以做到这一点,其中一种是枚举正在运行的应用程序,然后是枚举应用程序内的窗口。

我将在这里展示应用方法

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)

为了获得这个解决方案,我必须参考很多线程

OS X: Move window from Python

How to list all windows from all workspaces in Python on Mac?

How to get Window reference (CGWindow, NSWindow or WindowRef) from CGWindowID in Swift?

"No such file: 'requirements.txt' error" while installing Quartz module

How to build Apple's Son of grab example?

How to get another application window's title, position and size in Mac OS without Accessibility API?

Get the title of the current active Window/Document in Mac OS X

-[NSRunningApplication activateWithOptions:] not working

How to start an app in the foreground on Mac OS X with Python?

set NSWindow focused

Activate a window using its Window ID

【讨论】: