我正在编写一个ssl客户端到我的服务器,它使用python与pyqt4扭曲,我在PYQT中使用QTReactor扭曲但是当我运行代码时出现错误
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'
答案 0 :(得分:6)
AttributeError:'NoneType'对象没有属性'connectSSL'
是您尝试在None
上调用方法时收到的错误消息。
这行代码
reactor=qt4reactor.install()
是唯一分配reactor
的地方。该错误消息清楚地表明reactor
被赋值为None
。
我可以在该主题上找到的所有网络搜索点击都遵循以下模式:
qt4reactor.install(app)
from twisted.internet import reactor
所以我想这就是你的意思。但我确实承认对这些框架一无所知。
答案 1 :(得分:2)
qt4reactor.install()
未返回值,因此reactor
最终为None
。因此,当您尝试调用reactor
的方法时,您会收到此错误(显然,None
没有任何方法)。如果我看得正确,获取reactor
变量的正确方法是:
qt4reactor.install(app)
from twisted.internet import reactor