Python+PyQt 5 를 이용 하여 간단 한 브 라 우 저의 실전 기록 을 실현 합 니 다.

실험 환경
  • 운영 체제:Linux Mint
  • 편집기:vim
  • 프로 그래 밍 언어:python 3
  • 의존 항목 설치
    PyQt 5 설치
    Qt 는 크로스 플랫폼 의 C++응용 프로그램 개발 프레임 워 크 입 니 다.
    
    sudo apt-get install python3-pyqt5
    
    설치 완료 후 python 명령 행 인터페이스 에 들 어가 설치 가 올 바른 지 테스트 합 니 다.
    
    python3  
    >>>import PyQt5
    
    명령 을 실행 한 후 아무런 알림 이 없 으 면 설치 가 성공 했다 는 것 을 설명 합 니 다.
    프로 그래 밍 실현
    Qt 는 개발 자 에 게 QtWebKit 모듈 을 제공 합 니 다.QtWebKit 는 오픈 소스 기반 프로젝트 입 니 다.
    웹 키 트 의 웹 페이지 콘 텐 츠 렌 더 링 엔진 은 이 엔진 을 통 해 만 차원 을 더욱 빠르게
    네트워크 가 Qt 응용 프로그램 에 통합 되 었 습 니 다.
    더 많은 참고:http://doc.qt.io/archives/qt-5.5/qtwebkit-index.html
    브 라 우 저 에 웹 페이지 를 보 여 주 는 창 이 있 습 니 다.
    브 라 우 저 만 들 기
    Qt 프로그램 은 QApplication 클래스 인 스 턴 스 를 만들어 exec ()를 호출 합 니 다.방법 은 이벤트 순환 에 들 어가 고,
    그리고 프로그램 은 각종 사건 을 반복 적 으로 감청 하고 메시지 대기 열 에 넣 어 적당 한 시기 에 팀 에서
    열 에서 꺼 내 처리 하 다.
    
    ...
    #    QApplication        
    app = QApplication(sys.argv)
    #           
    app.exec_()  
    
    Qt 에서 제공 하 는 QToolBar 를 사용 하여 도구 모음 을 만 들 수 있 습 니 다.
    
    ...
    #      
    navigation_bar = QToolBar('Navigation')
    #        
    navigation_bar.setIconSize(QSize(16, 16))
    #         
    self.addToolBar(navigation_bar)
    ...
    
    QAction 클래스 는 추상 적 인 사용자 인터페이스 action 을 제공 합 니 다.
    
    #    
    reload_button = QAction(QIcon('icons/renew.png'), 'reload', self)
    
    action 과 실제 기능 을 연결 합 니 다.
    
    reload_button.triggered.connect(self.browser.reload)
    
    이 action 들 은 창 위 젯 에 배치 할 수 있 습 니 다.
    
    navigation_bar.addAction(reload_button)
    
    Qt 에는 강력 한 위 젯 클래스 QWidgets 가 있 습 니 다.이 클래스 를 기반 으로 다른 작은 위 젯 을 많이 파생 시 킬 수 있 습 니 다.예 를 들 어 QLine Edit 는 단일 텍스트 상자 입 니 다.이 위 젯 을 주소 표시 줄 로 보이 지 않 고 탐색 하기 위해 주소 표시 줄 을 추가 합 니 다.
    
    #  URL   
    self.urlbar = QLineEdit()
    
    Qt 의 모든 구성 요 소 는 신호 메커니즘 이 있 습 니 다.신호 와 해당 하 는 처리 함 수 를 연결 할 수 있 습 니 다.예 를 들 어 주소 표시 줄 의 리 턴 신호 urlbar.returnPressed 와 navigateto_url 함수 바 인 딩,주소 표시 줄 의 리 턴 신호 가 울 릴 때 함수 navigateto_url 처리
    
    #              
    self.urlbar.returnPressed.connect(self.navigate_to_url)
    #navigate_to_url  
    def navigate_to_url(self):
        q = QUrl(self.urlbar.text())
        if q.scheme() == '':
            q.setScheme('http')
        self.browser.setUrl(q)
    

    코드
    프로젝트 원본 및 자원 다운로드:https://github.com/RogerLZH/Browser.git
    
    # v1.2
    # created
    #   by Roger
    # in 2017.1.3
    
    from PyQt5.QtCore import *
    from PyQt5.QtWidgets import *
    from PyQt5.QtGui import *
    from PyQt5.QtWebKitWidgets import *
    
    import sys
    
    class MainWindow(QMainWindow):
        # noinspection PyUnresolvedReferences
        def __init__(self, *args, **kwargs):
            super().__init__(*args, **kwargs)
            #       
            self.setWindowTitle('My Browser')
            #       
            self.setWindowIcon(QIcon('icons/penguin.png'))
            #       900*600
            self.resize(900, 600)
            self.show()
    
            #      
            self.browser = QWebView()
            url = 'http://blog.csdn.net/roger_lzh'
            #         URL
            self.browser.setUrl(QUrl(url))
            #          
            self.setCentralWidget(self.browser)
    
    
            ###  QToolBar     ,   QAction    
            #      
            navigation_bar = QToolBar('Navigation')
            #        
            navigation_bar.setIconSize(QSize(16, 16))
            #         
            self.addToolBar(navigation_bar)
    
            #QAction           action,  action           
            #     、  、          
            back_button = QAction(QIcon('icons/back.png'), 'Back', self)
            next_button = QAction(QIcon('icons/next.png'), 'Forward', self)
            stop_button = QAction(QIcon('icons/cross.png'), 'stop', self)
            reload_button = QAction(QIcon('icons/renew.png'), 'reload', self)
    
            back_button.triggered.connect(self.browser.back)
            next_button.triggered.connect(self.browser.forward)
            stop_button.triggered.connect(self.browser.stop)
            reload_button.triggered.connect(self.browser.reload)
    
            #           
            navigation_bar.addAction(back_button)
            navigation_bar.addAction(next_button)
            navigation_bar.addAction(stop_button)
            navigation_bar.addAction(reload_button)
    
            #  URL   
            self.urlbar = QLineEdit()
            #              
            self.urlbar.returnPressed.connect(self.navigate_to_url)
    
            navigation_bar.addSeparator()
            navigation_bar.addWidget(self.urlbar)
    
            #      url     
            self.browser.urlChanged.connect(self.renew_urlbar)
    
        def navigate_to_url(self):
            q = QUrl(self.urlbar.text())
            if q.scheme() == '':
                q.setScheme('http')
            self.browser.setUrl(q)
    
        def renew_urlbar(self, q):
            #               
            self.urlbar.setText(q.toString())
            self.urlbar.setCursorPosition(0)
    
    
    #     
    app = QApplication(sys.argv)
    #      
    window = MainWindow()
    #     
    window.show()
    #     ,     
    app.exec_()    
    
    총결산
    파 이 썬+PyQt 5 를 이용 하여 간단 한 브 라 우 저 를 실현 하 는 것 에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.더 많은 파 이 썬+PyQt 5 간단 한 브 라 우 저 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 조회 하 시기 바 랍 니 다.앞으로 많은 지원 바 랍 니 다!

    좋은 웹페이지 즐겨찾기