如何使用Python脚本中的Cocoa API最小化/最大化macOS中的窗口?

Al *_*art 12 python macos cocoa pyobjc

如何通过Python脚本最小化/最大化macOS中的窗口?在Windows上,有一个win32 api(该ShowWindow()函数)可以执行此操作。我想要等效的macOS。我希望脚本能够从其标题中找到一个窗口,然后将其最小化或最大化。

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

Tar*_*ani 6

可能有不同的方法,其中一种是通过枚举正在运行的应用程序,另一种是枚举应用程序内部的窗口。

我将在这里展示应用程序方法

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
Run Code Online (Sandbox Code Playgroud)

这将找到当前关注的应用程序,您可以根据标题或您想要的任何内容更改逻辑

之后,app被发现。您可以使用

app.hide()
Run Code Online (Sandbox Code Playgroud)

您可以使用再次显示该应用

from Cocoa import NSApplicationActivateIgnoringOtherApps, NSApplicationActivateAllWindows
app.unhide()
app.activateWithOptions_(NSApplicationActivateIgnoringOtherApps)

# or 
app.activateWithOptions_(NSApplicationActivateIgnoringOtherApps | NSApplicationActivateAllWindows)
Run Code Online (Sandbox Code Playgroud)

我不得不参考很多线程才能获得此解决方案

OS X:从Python移动窗口

如何在Mac上的Python中列出所有工作区中的所有窗口?

如何从Swift中的CGWindowID获取窗口引用(CGWindow,NSWindow或WindowRef)?

安装Quartz模块时出现“没有这样的文件:'requirements.txt'错误”

如何建立苹果的抢儿子的例子?

在没有Accessibility API的情况下,如何在Mac OS中获取另一个应用程序窗口的标题,位置和大小?

获取Mac OS X中当前活动的窗口/文档的标题

-[NSRunningApplication activateWithOptions:]不起作用

如何使用Python在Mac OS X上的前台启动应用程序?

设置NSWindow为重点

使用其窗口ID激活窗口


归档时间:

查看次数:

455 次

最近记录:

6 年,6 月 前