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

PySimpleGUI窗口打开未运行的Chrome时崩溃问题求助

问题分析与解决

你的问题出在两个核心点上:

  1. 路径转义错误:代码里的Chrome路径使用了未转义的反斜杠\,Python会将\P这类字符解析成转义序列,导致实际路径无效。当Chrome未运行时,系统找不到可执行文件,触发错误直接导致程序崩溃。
  2. 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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 01:53:15