Re: [問題] windows 程式的 console 視窗問題

看板Python作者 (evenrain)時間12年前 (2013/04/22 11:00), 編輯推噓1(101)
留言2則, 1人參與, 最新討論串2/2 (看更多)
※ 引述《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

04/22 20:01, , 1F
self.result = process.communicate()[0]試看看
04/22 20:01, 1F

04/23 11:15, , 2F
把這段改一下, subprocess.Popen(...., shell=True, ...)
04/23 11:15, 2F
我改成 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)
文章代碼(AID): #1HTAVZ9Y (Python)
討論串 (同標題文章)
文章代碼(AID): #1HTAVZ9Y (Python)