看板 Python 關於我們 聯絡資訊
※ 引述《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
grapherd:self.result = process.communicate()[0]試看看 04/22 20:01
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)