需要的软件包如下:
Package Version
----------------- -------
pip 23.2.1
PyQt5 5.15.9
PyQt5-Qt5 5.15.2
PyQt5-sip 12.12.2
PyQtWebEngine 5.15.6
PyQtWebEngine-Qt5 5.15.2
setuptools 65.5.1
wheel 0.38.4
完整代码
import sys
from PyQt5.QtCore import *
from PyQt5.QtWidgets import *
from PyQt5.QtWebEngineWidgets import *class SimpleWebBrowser(QMainWindow):def __init__(self):super().__init__()self.browser = QWebEngineView()self.browser.setUrl(QUrl("http://www.google.com")) # 设置默认网页self.setCentralWidget(self.browser)self.browser.urlChanged.connect(self.update_urlbar)self.browser.loadFinished.connect(self.update_title)navtb = QToolBar("Navigation")self.addToolBar(navtb)back_btn = QAction("Back", self)back_btn.setStatusTip("Back to previous page")back_btn.triggered.connect(self.browser.back)navtb.addAction(back_btn)next_btn = QAction("Forward", self)next_btn.setStatusTip("Forward to next page")next_btn.triggered.connect(self.browser.forward)navtb.addAction(next_btn)reload_btn = QAction("Reload", self)reload_btn.setStatusTip("Reload page")reload_btn.triggered.connect(self.browser.reload)navtb.addAction(reload_btn)home_btn = QAction("Home", self)home_btn.setStatusTip("Go home")home_btn.triggered.connect(self.navigate_home)navtb.addAction(home_btn)navtb.addSeparator()self.urlbar = QLineEdit()self.urlbar.returnPressed.connect(self.navigate_to_url)navtb.addWidget(self.urlbar)stop_btn = QAction("Stop", self)stop_btn.setStatusTip("Stop loading current page")stop_btn.triggered.connect(self.browser.stop)navtb.addAction(stop_btn)self.status = QStatusBar()self.setStatusBar(self.status)self.browser.page().titleChanged.connect(self.adjust_title)self.setGeometry(100, 100, 1024, 768)self.setWindowTitle("Simple Web Browser")def update_title(self):title = self.browser.page().title()self.setWindowTitle(title)def navigate_home(self):self.browser.setUrl(QUrl("http://www.google.com"))def navigate_to_url(self):q = QUrl(self.urlbar.text())if q.scheme() == "":q.setScheme("http")self.browser.setUrl(q)self.browser.setFocus()def update_urlbar(self, q):if q.scheme() == 'https':self.urlbar.setStyleSheet("color: green;")else:self.urlbar.setStyleSheet("color: black;")self.urlbar.setText(q.toString())self.urlbar.setCursorPosition(0)def adjust_title(self):self.setWindowTitle(self.browser.page().title())def main():app = QApplication(sys.argv)QCoreApplication.setApplicationName("Simple Web Browser")window = SimpleWebBrowser()window.show()app.exec_()if __name__ == "__main__":main()