使用PyInstaller打包的Python程序运行时WMI控制台频繁闪显求助
解决WMIC控制台闪显问题
问题出在调用WMIC命令时,Windows默认会创建新控制台窗口,哪怕捕获了输出也会短暂弹出。只需修改subprocess.run()的参数,添加窗口隐藏标记即可解决。
修改后的代码
import subprocess import time import pyttsx3 engine = pyttsx3.init() def say_pc(txt): engine.say(txt) engine.runAndWait() # 定义隐藏窗口的标记,Windows系统专用 CREATE_NO_WINDOW = 0x08000000 while True: # 添加creationflags参数隐藏控制台窗口 result = subprocess.run( ["WMIC", "PATH", "Win32_Battery", "Get", "EstimatedChargeRemaining"], capture_output=True, creationflags=CREATE_NO_WINDOW ) battery_perc = str(int(result.stdout.decode().split("\n")[1][:3].strip())) say_pc(battery_perc) time.sleep(10)
关键说明
CREATE_NO_WINDOW是Windows API的常量,值为0x08000000,作用是让子进程不创建控制台窗口。- 将这个参数传入
subprocess.run(),执行WMIC时就不会弹出控制台窗口了。 - 打包命令保持不变:
pyinstaller --onefile --noconsole 'battery_perc.pyw'
重新打包后运行exe,就不会再出现每10秒闪控制台的现象了。
内容的提问来源于stack exchange,提问作者bowih
相关产品推荐
相关产品推荐

