【发布时间】:2025-12-23 00:35:07
【问题描述】:
如何通过 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)
为了获得这个解决方案,我必须参考很多线程
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?
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?
【讨论】: