2010-12-04 19 views
1

あなたはもういません。Python Twisted sendLine()

とにかく私はかなり長い間これを苦労してきました。だから私は基本的に私のアプリケーションをねじって、今はPyQtインタフェースを書いています。 Twistedスクリプトと新しいインターフェイスの間にまだ橋渡しできなかったことは1つだけです。これは、ボタンが押されているときに、sendLine()関数を介してデータを送信するためにTwistedを取得するときです。

私たちは使用できません。

QtCore.QObject.connect(self.pushButton_7, QtCore.SIGNAL("clicked()"), 
      Twisted().Button_Clicked('abc')) 


class Twisted(LineReceiver): 

    def Button_Clicked(self,out): 
     self.sendLine(out) 

これは、その結果:

File "/usr/lib/python2.6/dist-packages/twisted/protocols/basic.py", line 296, in sendLine 
    return self.transport.write(line + self.delimiter) 
AttributeError: 'NoneType' object has no attribute 'write' 

誰もがPyQtはボタンが押されたときに我々はいくつかのデータを送ることができる方法の例を与えることができますか?

ありがとうございました!

+0

「あなたはもう一度いない」とはどういう意味ですか? – Glyph

答えて

2

Twisted()をインスタンス化して使用することはできません。 Protocolであり、Protocolは、クライアントを接続するか、サーバーとして受信接続を受け入れるかに応じて、Factoryでインスタンス化する必要があります。表示されているエラーは、ボタンがクリックされた時点でTwistedのトランスポートが存在しないことを示しているため、データを送信する場所がありません。

私はあなたがクライアントを書いていると仮定しているので、おそらくWriting Clientsチュートリアルを読んでみたいです。

+0

これは私に少しのジレンマを残す。ユーザーがボタンを押すと、どのようにして工場からプロトコルを開始できますか?私が現在考えることができる唯一の方法は、最初の人がconnectionMade経由で遅延を開始してデータを送信することです。毎回、送信しようとしているものが前回送信したものと同じかどうかを確認し、そうでない場合はチェックしないでください。しかし、これはむしろ面倒です。別の方法がありますか? – LordOfTheDance

+0

あなたの言っていることを理解できません。接続を行うには、単に 'connectTCP'などと呼ぶ必要があります。その後、データを書き込んでください。あなたは何も送っておく必要はありません。ちょうどあなたの 'Button_Clicked'メソッドをチェックして接続がアップしているかどうかをチェックします(その場合、データを送る必要があります)。接続時に送信されるバッファにデータを追加する必要があります)、またはまだ作成されていない(その場合は、それを蹴る必要があります)。 – Glyph

関連する問題