ネットワーク上の場所から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オブジェクトのインスタンス化されたインスタンスをシグナルからスロットに渡す適切な方法を誰かに教えてもらえますか?
ありがとう。