欢迎访问宙启技术站
智能推送

PyQt5.QtWebEngineWidgetsQWebEnginePage()实现网页打开链接在新窗口中

发布时间:2024-01-05 21:30:09

PyQt5是一个Python的GUI编程工具包,其中包含了Qt的Python绑定模块,可以用来开发跨平台的图形用户界面应用程序。QtWebEngineWidgets模块是PyQt5中用于展示网页内容的模块,其中的QWebEnginePage类提供了一个网页浏览器框架,可以用来打开链接并在新窗口中展示。

下面是使用PyQt5.QtWebEngineWidgets.QWebEnginePage()打开链接在新窗口中的使用例子:

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


class WebPage(QWebEnginePage):
    def createWindow(self, _type):
        new_page = WebPage(self)
        new_page.urlChanged.connect(self.on_urlChanged)
        new_page.windowCloseRequested.connect(self.on_windowCloseRequested)
        return new_page

    
    def on_urlChanged(self, url):
        print("New page opened:", url)
        
    
    def on_windowCloseRequested(self):
        self.deleteLater()


if __name__ == "__main__":
    app = QApplication(sys.argv)
    
    view = QWebEngineView()
    page = WebPage()
    view.setPage(page)
    
    url = QUrl("https://www.example.com")
    view.load(url)
    
    view.show()
    
    sys.exit(app.exec_())

在这个例子中,我们首先创建了一个继承自QWebEnginePage的自定义类WebPage。在这个类中,我们重写了createWindow方法,用于处理打开链接的事件。当打开一个链接时,会创建一个新的WebPage对象,并连接相关的信号槽。在on_urlChanged方法中,我们打印出新打开页面的URL。在on_windowCloseRequested方法中,我们处理窗口关闭事件,将WebPage对象删除。

然后,我们创建一个QApplication实例,创建一个QWebEngineView实例,并设置其页面为我们自定义的WebPage对象。我们通过QUrl类创建了一个链接对象,然后通过load方法加载这个链接。最后,调用show方法显示出来。

运行这个示例,打开的链接将会在新窗口中展示,并在控制台输出新打开页面的URL。当关闭新打开的页面时,会自动释放相关资源。

这就是使用PyQt5.QtWebEngineWidgets.QWebEnginePage()实现网页打开链接在新窗口中的示例。