如何用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版本,此处省略
解决你遇到的问题
Selenium的局限性:
Selenium仅能控制由它自身启动的Chrome实例,无法操作已打开的浏览器窗口。报错module 'selenium.webdriver' has no attribute 'set_window_size'是因为你调用了错误的方法,正确用法是driver.set_window_size(w, h),但这依然只适用于Selenium启动的窗口。其他库无效果的原因:
- 未正确定位Chrome窗口:需确保窗口标题匹配(多语言版本要修改关键词)
- 未先激活窗口:调整大小前必须将窗口设为前台,否则系统可能忽略操作
- 权限不足:Windows下需以管理员身份运行脚本,否则无法修改窗口状态
注意事项
- 若有多个Chrome窗口,当前代码会调整第一个找到的窗口,可修改为
gw.getActiveWindow()操作当前激活的窗口 - 可自定义快捷键为组合键(如
Ctrl+Shift+1),需修改on_key_press中的按键判断逻辑 - 部分Chrome版本可能隐藏窗口标题,可通过进程ID辅助定位(需结合
psutil库)
内容的提问来源于stack exchange,提问作者Penguin
相关产品推荐
相关产品推荐

