• pyqt实现简易浏览器


    需要的软件包如下:

    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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    完整代码

    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()
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85
    • 86
    • 87
    • 88
    • 89
    • 90
    • 91
    • 92
    • 93
    • 94
    • 95
    • 96
  • 相关阅读:
    毫米波雷达阵列天线设计综合1(MATLAB仿真)
    Spring与MyBatis整合
    02.bpmn-js 样例项目解析----商业价值
    SpringBoot--redis自定义序列化配置不生效
    交换式网络捕获网络流量的方法
    SpringBoot运行流程源码分析------阶段三(Spring Boot外化配置源码解析)
    RuoYi-Vue-Plus 高端进阶 源码分析 系列教程
    vue设计原理-带你重走vue诞生路程
    黑马JVM总结(二十六)
    SuperMap GIS基础软件安全问题Q&A
  • 原文地址:https://blog.csdn.net/qq_17802895/article/details/133421432