等待网页加载完成后再加载列表中的下一个网页

1 投票
1 回答
3517 浏览
提问于 2025-04-16 08:53

我正在使用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 个回答

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() 

希望这能帮到你,祝好

撰写回答