千家信息网

怎么用Python PyQt5模块实现一个浏览器

发表于:2025-01-19 作者:千家信息网编辑
千家信息网最后更新 2025年01月19日,这篇"怎么用Python PyQt5模块实现一个浏览器"文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们
千家信息网最后更新 2025年01月19日怎么用Python PyQt5模块实现一个浏览器

这篇"怎么用Python PyQt5模块实现一个浏览器"文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇"怎么用Python PyQt5模块实现一个浏览器"文章吧。

1. 首先是环境的安装 (本人使用的是PyCharm,python3.6)

pip3 install PyQt5 (没有指定版本的话,默认会安装最新的)
pip3 install sip
pip3 install PyQtWebEngine
(PyQtWebEngine是Qt WebEngine的一组框架,该框架提供了在应用程序中嵌入 Web 内容的能力,并且基于 Chrome 浏览器。)

2. 实现代码

from PyQt5.QtCore import *from PyQt5.QtWidgets import *from PyQt5.QtGui import *from PyQt5.QtWebEngineWidgets import *import osimport sysclass MainWindow(QMainWindow):    def __init__(self, *args, **kwargs):        super().__init__(*args, **kwargs)        self.resize(2000, 1314)        self.show()        self.tabWidget = QTabWidget()        self.tabWidget.setTabShape(QTabWidget.Triangular)        self.tabWidget.setDocumentMode(True)        self.tabWidget.setMovable(True)        self.tabWidget.setTabsClosable(True)        self.tabWidget.tabCloseRequested.connect(self.close_Tab)        self.setCentralWidget(self.tabWidget)        self.webview = WebEngineView(self)        self.webview.load(QUrl("http://www.baidu.com"))        self.create_tab(self.webview)        navtb = QToolBar("Navigation")        navtb.setIconSize(QSize(16, 16))        self.addToolBar(navtb)        back_btn = QAction(QIcon(os.path.join("images", "houtui.png")), "后退", self)        back_btn.triggered.connect(self.webview.back)        navtb.addAction(back_btn)        next_btn = QAction(QIcon(os.path.join("images", "qianjin.png")), "前进", self)        next_btn.triggered.connect(self.webview.forward)        navtb.addAction(next_btn)        reload_btn = QAction(QIcon(os.path.join("images", "refresh_icon.png")), "刷新", self)        reload_btn.triggered.connect(self.webview.reload)        navtb.addAction(reload_btn)        home_btn = QAction(QIcon(os.path.join("images", "geren1.png")), "主页", self)        navtb.addAction(home_btn)        self.urlbar = QLineEdit()        stop_btn = QAction(QIcon(os.path.join("images", "cross-circle.png")), "Stop", self)        stop_btn.triggered.connect(lambda: self.tabs.currentWidget().stop())        navtb.addAction(stop_btn)        self.urlbar.returnPressed.connect(self.navigate_to_url)        navtb.addSeparator()        navtb.addWidget(self.urlbar)        self.webview.urlChanged.connect(self.renew_urlbar)    def navigate_to_url(self):        q = QUrl(self.urlbar.text())        if q.scheme() == "":            q.setScheme("http")        self.webview.setUrl(q)    def renew_urlbar(self, q):        self.urlbar.setText(q.toString())        self.urlbar.setCursorPosition(0)    def create_tab(self, webview):        self.tab = QWidget()        self.tabWidget.addTab(self.tab, "新建标签页")        self.tabWidget.setCurrentWidget(self.tab)        self.Layout = QHBoxLayout(self.tab)        self.Layout.setContentsMargins(0, 0, 0, 0)        self.Layout.addWidget(webview)    def close_Tab(self, index):        if self.tabWidget.count() > 1:            self.tabWidget.removeTab(index)        else:            self.close()class WebEngineView(QWebEngineView):    def __init__(self, mainwindow, parent=None):        super(WebEngineView, self).__init__(parent)        self.mainwindow = mainwindow    def createWindow(self, QWebEnginePage_WebWindowType):        new_webview = WebEngineView(self.mainwindow)        self.mainwindow.create_tab(new_webview)        return new_webviewapp = QApplication(sys.argv)browser = MainWindow()browser.show()sys.exit(app.exec_())

3. 运行结果

4. Tips

如果提示说缺少哪些模块的话,一般Pycharm都会有提示安装,如果没有提示,可以参考一下我运行成功的库:

以上就是关于"怎么用Python PyQt5模块实现一个浏览器"这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注行业资讯频道。

0