我正在開發用於重新編譯Linux內核的GUI。爲此,我需要從Python實現4-5個Linux命令。我使用Qt作爲GUI設計器。我已使用os.system()
調用成功實施了這些命令。但輸出是在控制檯上獲得的。真正的問題是命令的輸出是一個需要幾乎20-25分鐘連續打印的清單。我們如何將這個控制檯輸出轉移到Qt中設計的文本框中。任何人都可以幫助我在Qt中使用源代碼實現setSource()
操作作爲實時控制檯輸出。如何將Python控制檯輸出重定向到QTextBox
3
A
回答
5
self.process = QProcess()
self.connect(self.process, SIGNAL("readyReadStdout()"), self.readOutput)
self.connect(self.process, SIGNAL("readyReadStderr()"), self.readErrors)
tarsourcepath="sudo tar xvpf "+ self.path1
self.process.setArguments(QStringList.split(" ",tarsourcepath))
self.process.start()
def readOutput(self):
self.textBrowser2.append(QString(self.process.readStdout()))
if self.process.isRunning()==False:
self.textBrowser2.append("\n Completed Successfully")
def readErrors(self):
self.textBrowser2.append("error: " + QString(self.process.readLineStderr()))
這所做的工作對我來說相當不錯。謝謝你們。
1
我主要處理wxPython,但是是http://diotavelli.net/PyQtWiki/Capturing_Output_from_a_Process的解決方案,將工作?
從頁面:
問題:你想運行一個進程 ,打印大量的信息到 控制檯,並顯示在 文本編輯器或瀏覽器的輸出,但結果 是一個GUI,凍結,直到 過程完成。
解決方案(許多可能的一個): 創建一個QProcess中的對象,其 信號連接到一些插槽類, 傳所需要的參數和 啓動它。過程的標準輸出 和stderr上的數據將傳送到您的插槽。
0
使用管道浮現在腦海。您可以使用後臺線程來讀取程序的輸出(並且每當添加新行時就將事件發送到GUI)。
所以其基本思路是這樣的:
os.chdir("/usr/src/linux-2.6.34")
p = os.popen("make", "r")
try:
while True:
line = p.readline()
if not line:
break
# Replace this with a GUI update event (don't know anything about Qt, sorry)
print line
finally:
# Cf. http://docs.python.org/library/os.html#os.popen
programReturnValue = p.close() or 0
+0
這個想法是好的,但是問題是我知道如果線程能夠傳輸什麼到現在。因爲我不認爲我們有更新的時間差異。但我可以從NIck的上面找到答案。感謝您幫助我和iDog。 – Kris 2010-05-19 07:22:21
相關問題
- 1. 如何使用os.system命令將python控制檯輸出重定向到QTextBox?
- 2. 將輸出重定向到控制檯
- 3. Python:將輸出重定向到幾個控制檯?
- 4. 重定向控制檯輸出到UNIX
- 5. 如何將Octave的控制檯輸出重定向到單獨的控制檯?
- 6. Robot Framework:如何將控制檯輸出重定向到文件
- 7. 如何將控制檯輸出重定向到文本文件
- 8. (Eclipse RCP)如何將輸出重定向到控制檯視圖?
- 9. 如何將Spark輸出重定向到控制檯?
- 10. Tomcat如何將verbose:gc控制檯輸出重定向到catalina.out
- 11. 如何將輸出重定向到控制檯窗口?
- 12. Xcode 5,如何將控制檯輸出重定向到文件
- 13. 如何將linux終端輸出重定向到Eclipse控制檯?
- 14. scala 2.11:如何將控制檯輸出重定向到文件
- 15. 如何將控制檯輸出重定向到模塊內的PowerShell輸出?
- 16. 如何阻止VC#將控制檯輸出重定向到輸出窗口?
- 17. 將C++控制檯輸出重定向到C#
- 18. 將控制檯輸出重定向到winforms列表框
- 19. 將控制檯輸出重定向到java中的字符串
- 20. 將控制檯輸出重定向到日誌文件
- 21. 將控制檯日誌輸出重定向到flask-socketio
- 22. 將控制檯輸出重定向到GUI
- 23. 將實時SSH控制檯輸出重定向到JFrame
- 24. 將程序輸出重定向到QLabel而不是控制檯
- 25. 將跟蹤輸出重定向到控制檯
- 26. 將SWI-Prolog控制檯輸出重定向到一個文件
- 27. 將printf C++控制檯輸出重定向到C#
- 28. 將控制檯的tomcat輸出重定向到/ logs
- 29. 將BlackBerry設備模擬器輸出重定向到控制檯
- 30. 查找當前標準輸出或如何輸出重定向到控制檯
偉大的幫助兄弟,它真的有我的東西。但我得到的只是關於Windows的窗口。我需要使用它進行系統調用。它關於執行一些程序與req arguments.but它是偉大的幫助兄弟,因爲我可以獲得實現應用程序界面的方式。謝謝 – Kris 2010-05-19 06:19:38
再次嘗試併成功完成了兄弟。我用start()取代closeStdin()它順利地工作。謝謝 – Kris 2010-05-19 07:20:00