在信号和插槽之间传递参数时的PyQt解除绑定方法

在信号和插槽之间传递参数时的PyQt解除绑定方法,qt,pyqt,pyqt4,Qt,Pyqt,Pyqt4,我正在从事一个项目,在这个项目中,我需要从网络位置下载并解析一个XML文件。我一直在尝试使用QtNetwork模块来实现这一点,但我遇到了一个看似简单的问题,我花了很多时间试图解决这个问题。我的代码如下: class NetworkAccessor(QObject): done = False def importXml(self): self.manager = QNetworkAccessManager() self.manager.finis

我正在从事一个项目,在这个项目中,我需要从网络位置下载并解析一个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时,出现以下错误:

回溯(最近一次呼叫最后一次):
文件“C:/SVN Local/Thermal/PyQtTestTemplate.py”,第40行,在updateUi中
f=networkAccessor.importXml()
文件“C:/SVN Local/Thermal/PyQtTestTemplate.py”,第14行,在importXml中
self.connect(self.manager,SIGNAL(“finished(QNetworkReply*)”),self.fileReady(QNetworkReply))
文件“C:/SVN Local/Thermal/PyQtTestTemplate.py”,第20行,在fileReady中
self.f.write(response.readAll())
TypeError:QIODevice.readAll():未绑定方法的第一个参数的类型必须为“QIODevice”

这似乎表明传递给fileReady方法的参数没有实例化。此外,上面的
print type(response)
语句表明
response
属于
PyQt4.QtNetwork.QNetworkReply
类型

我尝试了多种方式将信号连接到插槽,包括“老式”方式:
self.connect(self.manager,signal(“finished(QNetworkReply*)”)、self.fileReady(“QNetworkReply”))
,以及使用短路参数传递,但都没有成功

有人能告诉我将QNetworkReply对象的实例化实例从信号传递到插槽的正确方法吗


谢谢。

只要将插槽传递给它,QNetworkReply对象将通过以下信号:

self.manager.finished.connect(self.fileReady)

没关系,我已经弄明白了。完成的信号没有在我的程序中发出,但是当我以我所做的方式指定slot时,slot方法立即被调用,并将一个未初始化的QNetworkReply对象传递给该方法。因此,现在又提出了另一个问题:为什么没有升起完成的旗帜?这个文件只有几千字节长,我确信地址是正确的。不过,该文件每隔一秒钟左右就会更新一次,但我认为这与此无关。