2010-12-04 144 views
1

不是你再次。Python扭曲的sendLine()

好吧,無論如何,我一直在努力與此相當一段時間。所以基本上我有我的扭曲的應用程序,現在我正在爲它寫一個PyQt接口。只有一件事我沒有能夠在Twisted腳本和新界面之間進行橋接。這是當一個按鈕被按下時,Twisted通過sendLine()函數發送一些數據。

我們不能使用。

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 2010-12-04 05:23:33

回答

2

你不能只是實例化Twisted()然後使用它;它是ProtocolProtocol必須通過Factory實例化,以響應連接客戶端或接受傳入連接作爲服務器。你看到的錯誤是告訴你,在按鈕被點擊的地方,Twisted的傳輸不存在,所以無處發送數據。

由於我假設您正在編寫客戶端,因此您可能需要閱讀Writing Clients教程。

+0

那麼這讓我有點困惑。當用戶按下按鈕時,如何通過工廠啓動協議。我現在可以想到的唯一方法是,當第一個人連接時,通過connectionMade()啓動延遲連接,並讓它發送數據。每次檢查它當前嘗試發送的內容是否與上次發送的內容相同,如果是,則不要。這雖然很骯髒。有另一種方法嗎? – LordOfTheDance 2010-12-05 16:44:06