等到网页加载完毕后加载列表中的下一个网页

时间:2010-12-22 04:49:37

标签: python pyqt webview

我正在使用PyQT webView访问我存储在字典中的一些网页,代码是这样的:

def loadLink(self, url):        
   manager = QNetworkAccessManager()
    request = QNetworkRequest(QUrl(url))        
    self.ui.webView.load(QUrl(visitar))     

def readUnreadLinks(self):
     print "Links to read: " + str(len(self.unreadLinks))
     for link in self.unreadLinks:
         print "link-> " + str(link)
         self.loadLink(link)

问题是它不会等到完成加载网页并开始加载下一个网页。我想加载一个网页,等到它加载完毕然后加载下一个网页。

谢谢,这让我抓狂!)

1 个答案:

答案 0 :(得分:3)

你可能希望使用你的QWebView控件的loadFinished信号来检测页面加载何时完成并触发新加载。请参阅下面的示例是否适用于您:

import sys
from PyQt4 import QtGui, QtCore, QtWebKit 

class MainForm(QtGui.QMainWindow):
    def __init__(self, parent=None):
        super(MainForm, self).__init__(parent)

        self.pages = ['http://www.google.com', 'http://www.citrix.com', 'http://yahoo.com', 'http://reddit.com']
        self.index = 0

        self.view = QtWebKit.QWebView()  
        self.view.connect(self.view, QtCore.SIGNAL('loadFinished(bool)'), self.loadFinished)
        self.setCentralWidget(self.view)

        self.view.load(QtCore.QUrl(self.pages[self.index]))

    def loadFinished(self, ok):
        self.index += 1
        if self.index < len(self.pages) :
            self.view.load(QtCore.QUrl(self.pages[self.index]))
        else:
            print 'done'

def main():
    app = QtGui.QApplication(sys.argv)
    form = MainForm()
    form.show()
    app.exec_()

if __name__ == '__main__':
    main() 

希望这有帮助,尊重