【问题标题】:Python Twisted sendLine()Python 扭曲的 sendLine()
【发布时间】:2010-12-04 02:03:04
【问题描述】:

不,又不是你。

无论如何,我已经为此苦苦挣扎了一段时间。所以基本上我有我的扭曲应用程序,现在我正在为它编写一个 PyQt 接口。只有一件事我还无法在 Twisted 脚本和新界面之间架起一座桥梁。那是当一个按钮被按下时,通过 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 按钮时我们如何发送一些数据?

谢谢再见!

【问题讨论】:

  • “不再是你了”是什么意思?

标签: python twisted


【解决方案1】:

你不能只实例化Twisted() 然后使用它;它是Protocol,并且Protocols 必须通过Factory 实例化,以响应连接客户端或接受传入连接作为服务器。您看到的错误是告诉您Twisted 的传输在单击按钮的位置不存在,因此无处发送数据。

由于我假设您正在编写一个客户端,您可能想阅读Writing Clients 教程。

【讨论】:

  • 这让我有点进退两难。当用户按下按钮时,如何通过工厂启动协议。我目前能想到的唯一方法是当第一个人连接时,通过 connectionMade(): 开始延迟,并让它持续发送数据。每次检查它当前尝试发送的内容是否与上次发送的内容相同,如果是,则不要。不过,这相当邋遢。还有其他方法吗?
  • 我不明白你在说什么。您只需拨打connectTCP 或类似的电话即可建立连接。然后稍后,向它写入一些数据。您无需继续发送任何内容,只需检查您的 Button_Clicked 方法,该方法检查连接是否已启动(在这种情况下您需要向其发送数据),是否正在建立(在这种情况下您需要将您的数据附加到缓冲区,该缓冲区将在连接时发送)或尚未制作(在这种情况下您需要将其启动)。
猜你喜欢
  • 2012-04-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-30
  • 1970-01-01
  • 2011-06-04
相关资源
最近更新 更多