1

ループを作成しようとしていますが、loadFinishedシグナルを待機していません。

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アドレスを使用してサンプルWebサイトを読み込もうとしています。Browser()から、彼らはNetworkAccessManagerに渡されました。

proxy = QNetworkProxy(QNetworkProxy.HttpProxy, self.ip, self.port)
self.setProxy(proxy)

問題は、ファイルにIPアドレスが1つしかない場合、正常に機能することです。ただし、それらが2つある場合は、コンソールでの出力が無効になるよりも、forループを通過し、Browser()クラスでFinishedが読み込まれるまで待機しません。

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とloadProgressSIGNALSは次のように単純です。

def _progress(self, progress):
        print str(progress) + "%"


    def _loadFinished(self):
        print "Done"
4

1 に答える 1

1

を呼び出す前に、次のコードを試してくださいbr.load(url)

loop = QEventLoop()
br.loadFinished.connect(loop.quit)
loop.exec_() 

Browserこれは、あなたが放出することを前提としていますloadFinished(のサブクラスですQWebView

于 2012-12-17T12:40:53.300 に答える