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))
我正在制作自己的国际象棋 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))