1

クラスへHistoricRecvLineのインターフェイスとして使用する があります。twisted.internet.protocol.ProcessProtocolからプロトコルへの情報HistoricRecvLineを問題なく取得できますが、逆方向に進むためのマジック バインディングを見つけることができないようです。つまり、プロトコルからの情報を CLI に表示したいのです。より明確にするために、ProcessProtocol によって作成されたサブプロセスの stdout/stderr メッセージを、HistoricRecvLine の CLI 実装に表示したいと考えています。

誰かがそれを行う方法を知っているか、正しい方向に向けることができますか?

4

1 に答える 1

0

Jean Paul Calderoneは、彼のコメントで解決策のヒントを提供しました。

コマンド ラインには、プロトコルへの参照があります。プロトコルでset_cli_write_func(self, func)、cli に書き込むための正しいメソッドを設定するメソッドを作成します。cli を作成するときは、次のような適切なプロトコルで関数を呼び出します。

def lpr(self, message): 
    """Print a message to the screen.

    :type message: String
    :param message: The message string.
    """
    self.terminal.nextLine()
    self.terminal.write(_format_message(message))
    self.terminal.nextLine()
    self.drawInputLine()

このメソッドがプロトコルから呼び出されるようにします。

これにより一種の循環依存が作成されるため、オブジェクトが破棄されたときにそれを確認する必要があることに注意してください。

于 2013-05-21T07:21:18.413 に答える