PySimpleGUI窗口打开未运行的Chrome时崩溃问题求助
问题分析与解决
你的问题出在两个核心点上:
- 路径转义错误:代码里的Chrome路径使用了未转义的反斜杠
\,Python会将\P这类字符解析成转义序列,导致实际路径无效。当Chrome未运行时,系统找不到可执行文件,触发错误直接导致程序崩溃。 - GUI线程阻塞:
os.system会等待命令执行完成才返回,Chrome未运行时的启动过程会阻塞GUI线程,引发假死甚至崩溃。
修复方案
改用subprocess.Popen替代os.system,同时修正路径转义问题:
import PySimpleGUI as sg import subprocess layout = [ [sg.Text('Press "Open Google" to open Google.')], [sg.Button("Exit"), sg.Button("Open Google", key="-GOOGLE-")] ] window = sg.Window("Test Window", layout) while True: event, values = window.read() if event in ("Exit", sg.WIN_CLOSED): window.close() break if event == "-GOOGLE-": # 原始字符串避免转义问题,Popen异步启动不阻塞GUI chrome_path = r"C:\Program Files\Google\Chrome\Application\chrome.exe" subprocess.Popen([chrome_path, "-incognito", "https://google.com"], shell=False)
关键改动说明
- 路径处理:用原始字符串前缀
r,确保反斜杠被当作普通字符,不会被解析成转义序列,保证路径正确。 - 异步启动:
subprocess.Popen启动进程后立即返回,不会阻塞GUI线程,无论Chrome是否已运行,都能保持程序响应。 - 参数传递:将命令拆分为列表形式传递,避免路径空格带来的解析错误,比字符串形式更可靠。
内容的提问来源于stack exchange,提问作者John Marinelli
相关产品推荐
相关产品推荐

