作者eaden (evenrain)
看板Python
标题Re: [问题] windows 程式的 console 视窗问题
时间Mon Apr 22 11:00:48 2013
※ 引述《eaden (evenrain)》之铭言:
: 我用 pySide 写了一个 GUI 程式,有个小功能是点击按钮後会去 ping 192.168.1.x
: 在 Eclipse 里执行时看起来很正常。
: 然後用 GUI2Exe 这个 GUI 工具,透过 py2exe 把程式打包成 .exe
: ExeKind 我选了 windows,实际执行时不会另外跳出 console 视窗,
: 不过当我 click button 後,却跳出一堆 console 视窗在执行 ping 指令
: 虽然说执行完毕会自动关闭,但是跳出一堆视窗还满困扰的,
: 不知道是不是打包成 exe 的时候要注意些什麽?
: 程式码在这:
: https://dl.dropboxusercontent.com/u/1245969/pingtest.7z
: dist 目录里就是打包成 exe 後的档案,执行 main.exe 可以看到结果
: 麻烦大家帮忙看一下问题出在哪里,谢谢 m(_ _)m
遇到另外一个问题
我在原先的 netutils.GetIpMacListThread 之後加了
process = subprocess.Popen(["arp", "-a"], stdout=subprocess.PIPE)
self.result = process.stdout.read()
想取得 arp 的结果,在 eclipse 中跑是正常的
但是用 pyinstaller-gui 打包之後,
如果勾选了 "No console",则无法取得 arp 的结果,
但是如果不勾选 "No console",则可以正常显示。
看起来是因为 stdout 设为 PIPE,但是因为没有 console,
所以去读取资料的时候抓不到东西,请问这个问题除了不勾选 "No console" 外,
有其他的解法吗?
程式码:
https://dl.dropboxusercontent.com/u/1245969/pingtest.zip
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 122.116.190.212
1F:→ grapherd:self.result = process.communicate()[0]试看看 04/22 20:01
2F:推 grapherd:把这段改一下, subprocess.Popen(...., shell=True, ...) 04/23 11:15
我改成
process = subprocess.Popen(["arp", "-a"], stdout=subprocess.PIPE, shell=True)
self.result = process.communicate()[0]
结果还是一样,只要勾选了 No console 就抓不到东西 orz
※ 编辑: eaden 来自: 122.116.190.212 (04/24 13:41)
最後放弃 subprocess 改用 os.system('arp -a > tmp')
然後再去读档解决了 XD
※ 编辑: eaden 来自: 122.116.190.212 (04/24 14:17)