循环总是在第三次迭代时停止

2024-04-26 12:32:18 发布

您现在位置:Python中文网/ 问答频道 /正文

所以,伙计们,我仍然不明白为什么迭代总是在第三个转弯处停止
这是我的密码:

from PyQt5.QtWidgets import QApplication
from PyQt5.QtCore import QUrl
from PyQt5.QtWebEngineWidgets import QWebEnginePage
import sys
import numpy as np
from bs4 import BeautifulSoup as soup

class Client(QWebEnginePage):
    def __init__(self,url):
        global app
        self.app = QApplication(sys.argv)
        QWebEnginePage.__init__(self)
        self.html = ""
        self.loadFinished.connect(self.on_load_finished)
        self.load(QUrl(url))
        self.app.exec_()

    def on_load_finished(self):
        self.html = self.toHtml(self.Callable)
        print("Load Finished")

    def Callable(self,data):
        self.html = data
        self.app.quit()



linkgroup = []
linkgroup.append("https://docs.python.org/3/whatsnew/3.7.html")
linkgroup.append("https://docs.python.org/3/tutorial/index.html")
linkgroup.append("https://docs.python.org/3/installing/index.html")
linkgroup.append("https://docs.python.org/3/reference/index.html")
linkgroup.append("https://docs.python.org/3/using/index.html")

for h in range(0,len(linkgroup)):
    #Setting Url
    url = linkgroup[h]
    print(url)
    print("Loop Index : " + str(h))

    client_response = Client(url)

输出如下

https://docs.python.org/3/whatsnew/3.7.html
Loop Index : 0
Load Finished
https://docs.python.org/3/tutorial/index.html
Loop Index : 1
Load Finished
https://docs.python.org/3/installing/index.html
Loop Index : 2

如您所见,循环的其余迭代不会执行,因为它不会显示来自客户机类的响应


Tags: fromhttpsorgimportselfloopappurl
5条回答

正如上面pschill所评论的,您应该只有一个QApplication。把它作为参数传递给构造函数怎么样?比如:

from PyQt5.QtWidgets import QApplication
from PyQt5.QtCore import QUrl
from PyQt5.QtWebEngineWidgets import QWebEnginePage
import sys
import numpy as np
from bs4 import BeautifulSoup as soup

class Client(QWebEnginePage):
    def __init__(self,url,app):
        self.app = app
        QWebEnginePage.__init__(self)
        self.html = ""
        self.loadFinished.connect(self.on_load_finished)
        self.load(QUrl(url))
        self.app.exec_()

    def on_load_finished(self):
        self.html = self.toHtml(self.Callable)
        print("Load Finished")

    def Callable(self,data):
        self.html = data
        self.app.quit()

linkgroup = []
linkgroup.append("https://docs.python.org/3/whatsnew/3.7.html")
linkgroup.append("https://docs.python.org/3/tutorial/index.html")
linkgroup.append("https://docs.python.org/3/installing/index.html")
linkgroup.append("https://docs.python.org/3/reference/index.html")
linkgroup.append("https://docs.python.org/3/using/index.html")

app = QApplication(sys.argv)

for h in range(0,len(linkgroup)):
    #Setting Url
    url = linkgroup[h]
    print(url)
    print("Loop Index : " + str(h))

    client_response = Client(url, app)

相关问题 更多 >