【发布时间】:2014-05-03 09:42:30
【问题描述】:
我用 tinker 编写了一些复杂的 Python3 GUI 代码,并用 cx_Freeze 编译。
只有在 Windows 上运行时才会出现此问题。
子进程 check_ouptut(或 Popen)运行类似的命令:
import subprocess
VAL = subprocess.check_output(['adb.exe', 'version'], shell=False, stdout=subprocess.PIPE).decode()
所以我需要捕获输出并将其存储为 VAL。但是,当它发生时,会弹出 cmd 窗口,并在读取值后关闭。我有一组执行类似操作的命令,它导致 adb.exe 在 cmd 窗口中弹出,这真的很烦人。
有没有办法让这些静音,所以 cmd 不弹出?
正如我所提到的,代码作为 GUI/tkinter 运行,使用 cx_Freeze 编译,并且只出现在 Microsoft Windows 上(不会出现在 Linux 上)。
谢谢。
【问题讨论】:
-
试过添加 \c 吗?
['adb.exe', '\c', 'version'] -
是的,我试过 '\c' 但没有运气:(
-
我知道,如果你有 tkinter 源代码,并且想在没有附加命令窗口的情况下运行 GUI,你只需将 .pyc 对象文件重命名为 .pyw ...用cx_Freeze编译的我不知道...你有源代码吗?
-
使用
STARTUPINFO。 -
BTW,弹出的窗口是控制台窗口,不是cmd窗口。创建它是因为 adb.exe 被标记为控制台应用程序,就像 cmd.exe 一样。如果不能从父进程继承,则会创建一个新的控制台窗口。此窗口由 csrss.exe 或 conhost.exe (Windows 7+) 托管,因此可以附加多个进程。
标签: python python-3.x subprocess adb cx-freeze