Python 国际象棋:如何阻止 chess.engine.SimpleEngine.popen_uci() 打开 shell

Python Chess: How to stop chess.engine.SimpleEngine.popen_uci() from opening the shell

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

这是一个 platform-specific 问题,我根据 'location\of\stockfish' 猜测 Windows 是您感兴趣的平台。

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

扩展@BoarGules 的回答:

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