You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python在macOS中关闭指定窗口?

macOS通过kCGWindowNumber控制单个窗口的解决方案

你可以通过AppleScript配合Python或者Quartz+AppKit结合的方式实现通过kCGWindowNumber关闭/隐藏指定窗口,以下是具体实现方法:

方法1:AppleScript + Python(推荐,兼容性好)

AppleScript对macOS窗口的精细化控制支持完善,Python可以通过subprocess调用osascript执行脚本,直接通过窗口号定位并操作窗口:

关闭指定窗口号的窗口

import subprocess

def close_window_by_id(app_name, window_id):
    # 构造AppleScript脚本,通过窗口ID关闭目标窗口
    script = f'''
    tell application "{app_name}"
        close window id {window_id}
    end tell
    '''
    # 执行脚本
    subprocess.run(['osascript', '-e', script], check=True)

# 调用示例:关闭窗口号为12345的Chrome窗口
close_window_by_id("Google Chrome", 12345)

隐藏(最小化)指定窗口号的窗口

只需将脚本中的close替换为minimize即可:

import subprocess

def minimize_window_by_id(app_name, window_id):
    script = f'''
    tell application "{app_name}"
        minimize window id {window_id}
    end tell
    '''
    subprocess.run(['osascript', '-e', script], check=True)

方法2:Quartz + AppKit结合(需权限)

先通过Quartz筛选出目标窗口的kCGWindowNumber,再结合AppleScript完成窗口操作,需注意两点:

  1. 目标应用必须支持AppleScript脚本化(主流应用如Chrome、Safari均支持)
  2. 需给Python赋予辅助功能权限(路径:系统偏好设置 > 安全性与隐私 > 隐私 > 辅助功能,添加你的Python运行环境)
import Quartz
import subprocess

def get_target_window_number(app_name, window_title_keyword):
    # 通过Quartz筛选目标窗口,提取kCGWindowNumber
    window_list = Quartz.CGWindowListCopyWindowInfo(Quartz.kCGWindowListOptionOnScreenOnly, Quartz.kCGNullWindowID)
    for window_info in window_list:
        if (window_info.get('kCGWindowOwnerName') == app_name 
            and window_title_keyword in window_info.get('kCGWindowName', '')):
            return window_info['kCGWindowNumber']
    return None

# 示例:找到标题含"Stack Overflow"的Chrome窗口号并关闭
window_num = get_target_window_number("Google Chrome", "Stack Overflow")
if window_num:
    close_window_by_id("Google Chrome", window_num)

注意事项

  • 若遇到权限报错,检查系统偏好设置的辅助功能权限是否已添加对应的Python环境(如终端、PyCharm等)
  • 小众应用若不支持AppleScript,可尝试模拟键盘快捷键(如Cmd+W关闭窗口),但稳定性不如AppleScript方案

内容的提问来源于stack exchange,提问作者Gordon Hui

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 08:20:22