Python Twisted的sendLine()

1 投票
1 回答
2047 浏览
提问于 2025-04-16 08:01

又是你啊,真让人无奈。

不过无论如何,我已经为这个问题苦恼了很久。简单来说,我有一个用Twisted写的应用程序,现在我正在为它写一个PyQt的界面。唯一我还没能解决的就是,当按钮被按下时,如何让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按钮被按下时,怎么发送一些数据呢?

谢谢,再见!

1 个回答

2

你不能直接创建一个 Twisted() 的实例然后就使用它;因为它是一个 Protocol,而 Protocol 必须通过一个 Factory 来创建,这个过程是为了响应客户端的连接请求或者作为服务器接受一个新的连接。你看到的错误信息是在告诉你,当你点击按钮的时候,Twisted 的传输通道并不存在,所以没有地方可以发送数据。

因为我假设你是在写一个客户端,所以你可能想看看这个 编写客户端 的教程。

撰写回答