猫史档案馆


【浏览器】用pyqt5制作的浏览器

用户:企鹅不是鹅企鹅不是鹅查看:0 回复:0 评论:0 创建时间:2023-06-30T13:09:06


废话不多说,上代码(没做完)(能运行):

from PyQt5.QtCore import QUrl
from PyQt5.QtWidgets import QApplication, QMainWindow, QAction, QShortcut, QTabWidget, QLineEdit, QMenu
from PyQt5.QtGui import QKeySequence
from PyQt5.QtWebEngineWidgets import QWebEngineView, QWebEnginePage


class BrowserWindow(QMainWindow):
    def __init__(self):
        super().__init__()
        self.setWindowTitle("浏览器  --by SJR")
        self.setGeometry(100, 100, 800, 600)

        self.tab_widget = QTabWidget(self)
        self.tab_widget.setTabsClosable(True)
        self.tab_widget.tabCloseRequested.connect(self.close_tab)
        self.setCentralWidget(self.tab_widget)

        self.create_new_tab()

        self.create_toolbar()

    def create_new_tab(self):
        browser = QWebEngineView(self)
        browser.load(QUrl("https://www.喵/"))
        self.tab_widget.addTab(browser, "标签页")
        self.tab_widget.setCurrentWidget(browser)
        browser.page().titleChanged.connect(
            lambda title: self.update_tab_title(browser, title))

    def update_tab_title(self, browser, title):
        index = self.tab_widget.indexOf(browser)
        self.tab_widget.setTabText(index, title)

    def close_tab(self, index):
        widget = self.tab_widget.widget(index)
        widget.deleteLater()
        self.tab_widget.removeTab(index)

    def create_toolbar(self):
        toolbar = self.addToolBar("工具栏")

        new_tab_action = QAction("+", self)
        new_tab_action.setShortcut(QKeySequence("Ctrl+N"))
        new_tab_action.triggered.connect(self.create_new_tab)
        toolbar.addAction(new_tab_action)

        back_action = QAction("←", self)
        back_action.setShortcut(QKeySequence("Ctrl+Left"))
        back_action.triggered.connect(self.current_browser.back)
        toolbar.addAction(back_action)

        forward_action = QAction("→", self)
        forward_action.setShortcut(QKeySequence("Ctrl+Right"))
        forward_action.triggered.connect(self.current_browser.forward)
        toolbar.addAction(forward_action)

        reload_action = QAction("↺", self)
        reload_action.setShortcut(QKeySequence("Ctrl+R"))
        reload_action.triggered.connect(self.current_browser.reload)
        toolbar.addAction(reload_action)

        more_menu = QMenu("···", self)
        more_menu.addAction("书签")
        more_menu.addAction("历史记录")
        more_menu.addAction("下载管理器")
        more_menu.addAction("设置")
        toolbar.addAction(more_menu.menuAction())

        self.url_bar = QLineEdit()
        self.url_bar.returnPressed.connect(self.navigate_to_url)
        toolbar.addWidget(self.url_bar)

        self.current_browser.urlChanged.connect(self.update_url_bar)

        close_tab_shortcut = QShortcut(QKeySequence("Ctrl+W"), self)
        close_tab_shortcut.activated.connect(self.close_current_tab)

    @property
    def current_browser(self):
        return self.tab_widget.currentWidget()

    def navigate_to_url(self):
        url = QUrl(self.url_bar.text())
        self.current_browser.load(url)

    def update_url_bar(self, url):
        self.url_bar.setText(url.toString())

    def close_current_tab(self):
        current_index = self.tab_widget.currentIndex()
        self.close_tab(current_index)


if __name__ == "__main__":
    app = QApplication([])
    window = BrowserWindow()
    window.show()
    app.exec_()


回复

上一页1 页 / 共 0下一页