将Python代码打包为EXE时弹出cmd窗口的问题求助
解决PyInstaller打包后弹出cmd窗口的问题
问题出在你使用的os.system()函数——它会调用Windows的cmd.exe来执行命令,所以即使PyInstaller加了--windowed参数隐藏主程序的控制台,这个子进程的cmd窗口还是会弹出。
解决方法是用subprocess模块替代os.system(),通过设置参数来隐藏子进程的窗口:
修改代码
将原来的os.system调用替换为subprocess.Popen,并添加creationflags=subprocess.CREATE_NO_WINDOW参数:
import subprocess path = 'supported_languages.txt' # 启动记事本且不弹出cmd窗口 subprocess.Popen(['notepad.exe', path], creationflags=subprocess.CREATE_NO_WINDOW)
如果需要等待记事本关闭后再继续执行代码,可以加上wait():
import subprocess path = 'supported_languages.txt' proc = subprocess.Popen(['notepad.exe', path], creationflags=subprocess.CREATE_NO_WINDOW) proc.wait()
为什么这个方法有效
subprocess.CREATE_NO_WINDOW是Windows平台特有的参数,它会告诉系统创建进程时不显示控制台窗口,彻底避免了os.system()带来的cmd弹窗问题。
你的PyInstaller打包命令不需要修改,保持--windowed参数即可,它负责隐藏主Python程序的控制台。
内容的提问来源于stack exchange,提问作者kian cactus
相关产品推荐
相关产品推荐

