# SimPyWeb-X **Repository Path**: yurs/SimPyWeb-X ## Basic Information - **Project Name**: SimPyWeb-X - **Description**: No description available - **Primary Language**: Python - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2024-05-17 - **Last Updated**: 2024-05-17 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # SimPyWeb X —— 使用PyQt5以及QWebEngineView构建网页浏览器 ### 更新说明 **2020.1.26** SimPyWeb X 3.0 诈尸更新,多处修改 ### 运行方式 * shell 脚本直接运行 ```shell script python __init__.py ``` * 打包运行(可选择PyInstaller打包) > https://blog.csdn.net/creeperone/article/details/80957954 ### 效果图 ![](demo.png) ### 功能设计 #### 主窗体绘制 * 程序的init函数为启动函数,通过设定窗体的大小,标题,图标等等可以实现窗体的绘制。 ```python def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) # 窗体 self.setWindowTitle(self.name + self.version) self.setWindowIcon(QIcon('Assets/main.png')) self.resize(1200, 800) # 浏览器窗体 self.browser = QWebEngineView() self.browser.load(QUrl("http://www.hao123.com/")) self.setCentralWidget(self.browser) ``` #### 工具条实现 * 工具条实现 ```python # 工具条 navigation_bar = QToolBar('Navigation') navigation_bar.setIconSize(QSize(32, 32)) self.addToolBar(navigation_bar) ``` * 工具条按钮以及地址栏 ``` python # 后退按钮 back_button = QAction(QIcon('Assets/back.png'), '后退', self) # 其他组件 self.url_text_bar = QLineEdit() ``` * 将组件添加到工具条 ```python navigation_bar.addAction(home_button) navigation_bar.addSeparator() navigation_bar.addWidget(self.url_text_bar) ``` * 工具条按钮触发事件 ```python # 事件触发 back_button.triggered.connect(self.browser.back) ``` * 获取网页标题 ```python def renew_title(self, s): self.setWindowTitle(self.name + self.version + " -- " + s) ``` * 获取网页图标 ```python def renew_icon(self, ico): self.setWindowIcon(ico) ``` * 导向地址栏地址 ```python def navigate_to_url(self): s = QUrl(self.url_text_bar.text()) if s.scheme() == '': s.setScheme('http') self.browser.load(s) ``` * 地址栏重新操作 ```python def renew_urlbar(self, s): self.url_text_bar.setText(s.toString()) self.url_text_bar.setCursorPosition(0) ``` * 进度条设置 ```python def renew_progress_bar(self, p): self.progress_bar.setValue(p) ``` #### 多标签页功能的实现 * 添加标签 ```python def add_new_tab(self, tab): i = self.tabs.addTab(tab, "") self.tabs.setCurrentIndex(i) tab.back_button.triggered.connect(tab.browser.back) tab.next_button.triggered.connect(tab.browser.forward) tab.stop_button.triggered.connect(tab.browser.stop) tab.refresh_button.triggered.connect(tab.browser.reload) tab.home_button.triggered.connect(tab.navigate_to_home) tab.enter_button.triggered.connect(tab.navigate_to_url) tab.add_button.triggered.connect(self.add_blank_tab) tab.set_button.triggered.connect(tab.create_about_window) tab.url_text_bar.returnPressed.connect(tab.navigate_to_url) tab.browser.urlChanged.connect(tab.renew_urlbar) tab.browser.loadProgress.connect(tab.renew_progress_bar) tab.browser.titleChanged.connect(lambda title: (self.tabs.setTabText(i, title), self.tabs.setTabToolTip(i, title))) tab.browser.iconChanged.connect(lambda icon: self.tabs.setTabIcon(i, icon)) ``` * 删除标签 ```python def close_current_tab(self, i): if self.tabs.count() > 1: self.tabs.removeTab(i) else: self.close() ```