簡體   English   中英

尋找PyQt4嵌入式終端小部件

[英]Looking for PyQt4 embeddable terminal widget

我寫了一個應用程序,除其他外,啟動一些“后端”進程來做一些事情。 這些子過程很可能會失敗或出現意外行為,因為它們必須在相當困難的條件下運行,所以我更願意完全控制它們給操作員。

注意:我使用基於subprocess進程模塊的類而不是QProcess運行這些進程,以便在運行進程中具有更多控制功能。

目前,我正在使用一個QPlainTextEdit小部件,我從子QPlainTextEdit附加標准輸出/錯誤,加上一些按鈕可以快速發送一些常見信號(INT,STOP,CONT,KILL,..),但是:

  • 在某些情況下,發送一些輸入也很有用。 雖然可以使用文本輸入框來完成,但我更喜歡使用更“專業”的東西
  • 當然,沒有直接的方法來解釋特殊控制字符,如顏色代碼,光標移動等。
  • 我必須實現控制台的自動滾動管理,但不能保證100%正常工作(有時滾動鎖定不能按預期工作,等等)

所以:有沒有人知道我可以用來完成這些需求的東西?

我找到了qtermwidget,但它似乎更傾向於處理shell進程(並且Python綁定似乎只允許你運行/bin/bash ),而不是與已經存在的進程I / O進行通信。

這樣的事情有幫助嗎?

#!/usr/bin/env python
#-*- coding:utf-8 -*-

import  sys
from PyQt4.QtCore import *
from PyQt4.QtGui import *

class embterminal(QWidget):

    def __init__(self):
        QWidget.__init__(self)
        self.process = QProcess(self)
        self.terminal = QWidget(self)
        layout = QVBoxLayout(self)
        layout.addWidget(self.terminal)
        self.process.start(
                'xterm',['-into', str(self.terminal.winId())])
        # Works also with urxvt:
        #self.process.start(
                #'urxvt',['-embed', str(self.terminal.winId())])

if __name__ == "__main__":
    app = QApplication(sys.argv)
    main = embterminal()
    main.show()
    sys.exit(app.exec_())

您可以嘗試QConsole(http://qconsole.sourceforge.net/)。 我沒有使用它,但它看起來像你正在尋找的那種東西。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM