【问题标题】:Python Chess: How to stop chess.engine.SimpleEngine.popen_uci() from opening the shellPython Chess:如何阻止 chess.engine.SimpleEngine.popen_uci() 打开 shell
【发布时间】:2020-08-15 09:36:23
【问题描述】:

我正在制作自己的国际象棋 GUI,并使用 python chess 和 stockfish。将其冻结为可执行文件后,每次我调用chess.engine.SimpleEngine.popen_uci('location\\of\\stockfish') 时,它都会为stockfish 打开shell,如果我关闭shell,stockfish 将停止工作。我该怎么做才能使 shell 只在后台运行并且对用户不可见?

【问题讨论】:

    标签: python chess python-chess


    【解决方案1】:

    扩展@BoarGules 答案:

    engine = chess.engine.SimpleEngine.popen_uci(sf,startupinfo = subprocess.STARTUPINFO(dwFlags=subprocess.STARTF_USESHOWWINDOW))
    

    【讨论】:

      【解决方案2】:

      这是一个特定于平台的问题,我从'location\\of\\stockfish' 猜测 Windows 是您感兴趣的平台。

      popen_uci 接受一个 **(额外关键字)参数,您可以使用它将参数传递给 subprocess.Popen()。使用传递参数startupinfo 提供subprocess.STARTUPINFO 的实例。这反过来可以设置 win32 标志 wShowWindow 来做你想做的事。

      【讨论】:

      • 是的,我确实使用 Windows 10。当我调用 chess.engine.SimpleEngine.popen_uci('location\\of\\stockfish'startupinfo=subprocess.STARTUPINFO) 时,我收到错误 TypeError: copy() missing 1 required positional argument: 'self'
      猜你喜欢
      • 2023-04-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多