1

pyqt4でツイストされたPythonを使用するサーバーにSSLクライアントをプログラミングしています。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'
4

2 に答える 2

6

AttributeError:'NoneType'オブジェクトに属性'connectSSL'がありません

でメソッドを呼び出そうとしたときに表示されるエラーメッセージですNone

このコード行

reactor=qt4reactor.install()

reactor割り当てられる唯一の場所です。reactorエラーメッセージは、値が割り当てられていることを明確にしますNone

このトピックで見つけることができるすべてのWeb検索ヒットは、次のパターンに従います。

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 に答える