在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/Python/ PyQt5的QWebEngine,如何在加載完不同頁面后loadFinished

PyQt5的QWebEngine,如何在加載完不同頁面后loadFinished()執(zhí)行不同的函數(shù)?

我嘗試的代碼如下:

from PyQt5 import QtCore, QtGui
from PyQt5.QtWebEngineWidgets import QWebEngineView,QWebEnginePage
from PyQt5.QtCore import QUrl
from PyQt5.QtWidgets import QApplication

app = QApplication(sys.argv)
ui =  QWebEngineView()
class global_var:
    pagename=""

def load_baidu():
    global_var.pagename="baidu"
    print("load baidu")
    ui.load(QUrl("http://www.baidu.com"))
    
def load_oschina():
    global_var.pagename="oschina"
    print("load oschina")
    ui.load(QUrl("https://www.oschina.net/"))

def onStart():
    print ("Started..." )  
def onDone():
    print ("load ok---",global_var.pagename)  
    
ui.loadStarted.connect(onStart)
ui.loadFinished.connect(onDone)

load_baidu()
#time.sleep(2)
load_oschina() 

ui.showMaximized()
sys.exit(app.exec_())

是想在加載完一個頁面后觸發(fā)loadFinished(),然后運行不同的函數(shù)。問題是我怎么等到上一個網(wǎng)頁加載完,觸發(fā)對應的函數(shù)之后,再加載后邊的網(wǎng)頁。
嘗試很多,最終不能達到預期的效果,接觸編程(python)不久,只能來尋求幫助。

更新:想了想,可以在load_baidu()后加一個阻止進程往下運行的東西(不太會描述),然后等著觸發(fā)loadFinished()然后再解除阻止。不知道有沒有對應的方法?

更新:找到了一個不算太好的解決方法,不算優(yōu)雅,但終究算是能跑起來了,實現(xiàn)我的需求了。
更加好的方法還等著大佬的幫助

import sys,time
from PyQt5 import QtCore, QtGui
from PyQt5.QtWebEngineWidgets import QWebEngineView,QWebEnginePage
from PyQt5.QtCore import QUrl
from PyQt5.QtWidgets import QApplication

run_time=0
app = QApplication(sys.argv)
ui =  QWebEngineView()
class global_var:
    pagename=""
    loadover="no"

def load_baidu():
    global_var.pagename="baidu"
    print("load baidu")
    ui.load(QUrl("http://www.baidu.com"))
    # while global_var.loadover=="no":
    #     pass
    # global_var.loadover="no"
        
    
def load_oschina():
    global_var.pagename="oschina"
    print("load oschina")
    ui.load(QUrl("https://www.oschina.net/"))
    # while global_var.loadover=="no":
    #     pass
    # global_var.loadover="no"

def onStart():
    print ("Started..." )  
def onDone():
    global_var.loadover="yes"
    print ("load ok---",global_var.pagename)  
    global run_time
    if run_time==0:
        load_oschina()
        run_time=1
    elif run_time==1:
        print("done")

    
ui.loadStarted.connect(onStart)
ui.loadFinished.connect(onDone)

ui.showMaximized()
load_baidu()
#time.sleep(2)
#load_oschina() 
sys.exit(app.exec_())

回答
編輯回答
萌面人

就標題的意思回答, 你可以嘗試使用Python的類反射機制,根據(jù)網(wǎng)址拼接函數(shù)名,使用 hasattr 和 getattr 來確定和獲取對應函數(shù),并執(zhí)行

2018年5月18日 20:18