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

如何用Python通过快捷键调整Chrome窗口大小及恢复全屏?

解决方案:用Python监听键盘调整Chrome窗口大小

核心思路

放弃Selenium(仅能控制自身启动的浏览器),改用窗口控制库+键盘监听库组合,直接操作已运行的Chrome窗口:

  • 用pygetwindow/win32gui定位Chrome窗口
  • 用pynput监听键盘快捷键,触发窗口大小调整或全屏恢复

所需依赖

安装必要库:

pip install pynput pygetwindow pywin32

完整代码示例(pygetwindow版本)

from pynput import keyboard
import pygetwindow as gw

def get_target_chrome_window():
    # 找到标题包含Chrome标识的窗口(适配多语言版本,可修改为对应标题关键词)
    for window in gw.getAllWindows():
        # 中文Chrome替换为"谷歌浏览器",英文保留"Google Chrome"
        if "Google Chrome" in window.title or "谷歌浏览器" in window.title:
            return window
    return None

def resize_chrome(width, height):
    chrome_win = get_target_chrome_window()
    if not chrome_win:
        print("未找到Chrome窗口")
        return
    # 先激活窗口,确保操作生效
    chrome_win.activate()
    # 设置窗口尺寸
    chrome_win.size = (width, height)
    # 可选:将窗口移动到屏幕居中位置
    screen_w, screen_h = gw.getScreenSize()
    chrome_win.moveTo((screen_w - width)//2, (screen_h - height)//2)

def restore_fullscreen():
    chrome_win = get_target_chrome_window()
    if chrome_win:
        chrome_win.maximize()

def on_key_press(key):
    try:
        # 自定义快捷键:F1=竖屏(300,1080),F2=横屏(1920,300),F3=恢复全屏,ESC=退出监听
        if key == keyboard.Key.f1:
            resize_chrome(300, 1080)
        elif key == keyboard.Key.f2:
            resize_chrome(1920, 300)
        elif key == keyboard.Key.f3:
            restore_fullscreen()
        elif key == keyboard.Key.esc:
            return False  # 终止监听
    except AttributeError:
        # 忽略普通字符按键
        pass

if __name__ == "__main__":
    print("快捷键监听已启动:F1=竖屏,F2=横屏,F3=全屏,ESC=退出")
    with keyboard.Listener(on_press=on_key_press) as listener:
        listener.join()

备选方案(win32gui版本,兼容性更强)

如果pygetwindow在某些环境下失效,可改用win32gui直接操作窗口句柄:

from pynput import keyboard
import win32gui
import win32con

def get_chrome_handle():
    handles = []
    def enum_windows_callback(handle, extra):
        if win32gui.IsWindowVisible(handle):
            title = win32gui.GetWindowText(handle)
            if "Google Chrome" in title or "谷歌浏览器" in title:
                extra.append(handle)
    win32gui.EnumWindows(enum_windows_callback, handles)
    return handles[0] if handles else None

def resize_chrome(width, height):
    handle = get_chrome_handle()
    if not handle:
        print("未找到Chrome窗口")
        return
    # 激活窗口
    win32gui.SetForegroundWindow(handle)
    # 设置窗口大小(SWP_NOMOVE 保持当前位置不变)
    win32gui.SetWindowPos(handle, win32con.HWND_TOP, 0, 0, width, height, win32con.SWP_NOMOVE)

def restore_fullscreen():
    handle = get_chrome_handle()
    if handle:
        win32gui.ShowWindow(handle, win32con.SW_MAXIMIZE)

# 键盘监听部分同pygetwindow版本,此处省略

解决你遇到的问题

  1. Selenium的局限性:
    Selenium仅能控制由它自身启动的Chrome实例,无法操作已打开的浏览器窗口。报错module 'selenium.webdriver' has no attribute 'set_window_size'是因为你调用了错误的方法,正确用法是driver.set_window_size(w, h),但这依然只适用于Selenium启动的窗口。

  2. 其他库无效果的原因:

    • 未正确定位Chrome窗口:需确保窗口标题匹配(多语言版本要修改关键词)
    • 未先激活窗口:调整大小前必须将窗口设为前台,否则系统可能忽略操作
    • 权限不足:Windows下需以管理员身份运行脚本,否则无法修改窗口状态

注意事项

  • 若有多个Chrome窗口,当前代码会调整第一个找到的窗口,可修改为gw.getActiveWindow()操作当前激活的窗口
  • 可自定义快捷键为组合键(如Ctrl+Shift+1),需修改on_key_press中的按键判断逻辑
  • 部分Chrome版本可能隐藏窗口标题,可通过进程ID辅助定位(需结合psutil库)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 08:36:02