0

ネットワーク上の場所からXMLファイルをダウンロードして解析する必要があるプロジェクトに取り組んでいます。私はこれを達成するためにQtNetworkモジュールを使用しようとしてきましたが、解決しようとして何時間も費やしてきた一見単純な問題に遭遇しています。私のコードは次のとおりです。

class NetworkAccessor(QObject):
    done = False
    def importXml(self):
        self.manager = QNetworkAccessManager()
        self.manager.finished.connect(self.fileReady(QNetworkReply))
        self.manager.get(QNetworkRequest(QUrl("http://192.168.5.243/details.xml")))

    def fileReady(self, response):
        self.f = QTemporaryFile()
        print type(response)
        self.f.write(response.readAll())
        self.done = True
        print "Done"

NetworkAccessorクラスをインスタンス化してimportXmlを呼び出すと、次のエラーが発生します。

Traceback (most recent call last):
File "C:/SVN-Local/Thermal/PyQtTestTemplate.py", line 40, in updateUi
f = networkAccessor.importXml()
File "C:/SVN-Local/Thermal/PyQtTestTemplate.py", line 14, in importXml
self.connect(self.manager,SIGNAL("finished(QNetworkReply*)"),self.fileReady(QNetworkReply))
File "C:/SVN-Local/Thermal/PyQtTestTemplate.py", line 20, in fileReady
self.f.write(response.readAll())
TypeError: QIODevice.readAll(): first argument of unbound method must have type 'QIODevice'

fileReadyメソッドに渡された引数がインスタンス化されていないことを示しているようです。さらに、print type(response)上記のステートメントresponseは、がタイプであることを示していPyQt4.QtNetwork.QNetworkReplyます。

「昔ながらの」方法を含む、信号をスロットに接続するさまざまな方法を試しましたself.connect(self.manager,SIGNAL("finished(QNetworkReply*)"),self.fileReady("QNetworkReply"))。また、短絡パラメータの受け渡しを使用しても成功しませんでした。

QNetworkReplyオブジェクトのインスタンス化されたインスタンスをシグナルからスロットに渡す適切な方法を誰かに教えてもらえますか?

ありがとう。

4

1 に答える 1

0

スロットを渡すだけで、QNetworkReplyオブジェクトがシグナルによって渡されます。

self.manager.finished.connect(self.fileReady)
于 2012-06-27T21:17:11.910 に答える