我正在尝试创建一个循环,但它没有等待加载完成信号:
if __name__ == "__main__":
app = QApplication(sys.argv)
for line in open('proxy_list_test.txt', 'r').readlines():
network_data = line.split(':')
ip = network_data[0]
port = network_data[1]
print "Connecting with ip: %s port: %s"%(ip,port)
br = Browser(ip, port)
url = QUrl('http://example web site.com/')
br.load(url)
br.show()
print "Closing"
app.exec_()
如您所见,我正在尝试加载具有几个不同IP地址的示例网站。从浏览器()他们传递给网络访问管理器,我在那里做:
proxy = QNetworkProxy(QNetworkProxy.HttpProxy, self.ip, self.port)
self.setProxy(proxy)
问题是:当我的文件只有 1 个 IP 地址时,它工作正常!但是如果它有几个,那么控制台中的输出很奇怪,它会通过 for 循环并且不会等到 Browser() 类中加载完成。
Connecting with ip: some_ip port: some_port
10%
Closing
Connecting with ip: some_ip port: some_port
10%
Closing
Connecting with ip: some_ip port: some_port
10%
Closing
Done
100%
和 loadFinished 和 loadProgress SIGNAL 很简单:
def _progress(self, progress):
print str(progress) + "%"
def _loadFinished(self):
print "Done"
在调用 br.load(url)
之前尝试以下代码:
loop = QEventLoop()
br.loadFinished.connect(loop.quit)
loop.exec_()
这是假设您的Browser
发出loadFinished
(它是QWebView
的子类)