2010-12-04 153 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