Python+PyQt 5 를 이용 하여 간단 한 브 라 우 저의 실전 기록 을 실현 합 니 다.
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 간단 한 브 라 우 저 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 조회 하 시기 바 랍 니 다.앞으로 많은 지원 바 랍 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
로마 숫자를 정수로 또는 그 반대로 변환그 중 하나는 로마 숫자를 정수로 변환하는 함수를 만드는 것이었고 두 번째는 그 반대를 수행하는 함수를 만드는 것이었습니다. 문자만 포함합니다'I', 'V', 'X', 'L', 'C', 'D', 'M' ; 문자열이 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.