2012-12-16 3 views
1

내가 루프를 만들려고 해요에서 loadFinished 신호 대기하지 않고는 loadFinished 신호를 기다리지 않는다 : 당신은 내가로드하기 위해 노력하고있어 볼 수 있듯이루프 도움말 :이 PyQt4

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) 

문제는 다음과 같습니다 : 브라우저에서 는() 그들은 내가 할 곳 NetworkAccessManager에 전달 내 파일 만 1 개 IP 주소가있을 때 잘 작동! 하지만 그 중 몇 개가 콘솔의 출력보다 많으면 for 루프를 거치고 Browser() 클래스에서 Load 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 및 loadProgress 신호는 것과 같은 간단하다 :

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


    def _loadFinished(self): 
     print "Done" 
+0

어디 있니? 'loadFinished'를 기다리기위한 루프가 필요합니까? –

+0

기다리는 방법에 대한 예를 들어 주시겠습니까? – Vor

+0

checkout my [answer] (http://stackoverflow.com/a/13914370/1006989) –

답변

1

br.load(url)를 호출하기 전에이 코드를보십시오 :

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

이것은 당신의 Browser이 방출 가정되는이 loadFinished (이 서브 클래스 QWebView)

+0

감사의 말을 많이 듣고 싶습니다. – Vor