1

我正在为我的服务器编写一个 ssl 客户端,它使用 python 和 pyqt4 扭曲,我使用 QTReactor 在 PYQT 中扭曲,但是当我运行代码时出现错误

AttributeError: 'NoneType' object has no attribute 'connectSSL'

我的初始代码是这样的

from OpenSSL import SSL
import sys
from twisted.internet.protocol import ClientFactory
from twisted.protocols.basic import LineReceiver
from twisted.internet import ssl
import qt4reactor

app = QtGui.QApplication(sys.argv)
reactor=qt4reactor.install()
main()
myapp = MainForm()
myapp.show()
reactor.runReturn()
sys.exit(app.exec_())

def main():
    factory = ClientFactory()
    reactor.connectSSL('localhost', 8080, factory, ssl.ClientContextFactory())
    try:
        reactor.run()
    except KeyboardInterrupt:
        reactor.stop()

我运行它时的错误:

Traceback (most recent call last):
  File "client.py", line 51, in <module>
    main()
  File "client.py", line 40, in main
    reactor.connectSSL('localhost', 8080, factory, ssl.ClientContextFactory())
AttributeError: 'NoneType' object has no attribute 'connectSSL'
4

2 回答 2

6

AttributeError:“NoneType”对象没有属性“connectSSL”

是您尝试在 上调用方法时收到的错误消息None

这行代码

reactor=qt4reactor.install()

是唯一reactor被分配的地方。错误消息清楚地表明reactor正在分配 value None

我可以在该主题上找到的所有网络搜索点击都遵循以下模式:

qt4reactor.install(app)
from twisted.internet import reactor

所以我想这就是你应该这样做的方式。但我承认对这些框架一无所知。

于 2012-05-22T13:10:43.463 回答
2

qt4reactor.install()不返回值,因此reactor最终成为None. 因此,当您尝试调用某个方法时,reactor您会收到此错误(显然,None没有任何方法)。reactor如果我没看错,获取变量的正确方法是:

qt4reactor.install(app)
from twisted.internet import reactor
于 2012-05-22T13:12:30.613 回答