browser1 / app.py
broadfield-dev's picture
Create app.py
3c940b7 verified
import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QToolBar, QAction, QLineEdit, QVBoxLayout, QWidget
from PyQt5.QtWebEngineWidgets import QWebEngineView
from PyQt5.QtCore import QUrl
from PyQt5.QtGui import QIcon
class Browser(QMainWindow):
def __init__(self):
super().__init__()
self.setWindowTitle("Simple Browser")
self.setGeometry(100, 100, 1200, 800)
# Create web view
self.web_view = QWebEngineView()
self.web_view.setUrl(QUrl("https://www.google.com"))
# Create central widget and layout
central_widget = QWidget()
self.setCentralWidget(central_widget)
layout = QVBoxLayout(central_widget)
layout.addWidget(self.web_view)
# Create toolbar
toolbar = QToolBar()
self.addToolBar(toolbar)
# Back button
back_btn = QAction("Back", self)
back_btn.setStatusTip("Go back")
back_btn.triggered.connect(self.web_view.back)
toolbar.addAction(back_btn)
# Forward button
forward_btn = QAction("Forward", self)
forward_btn.setStatusTip("Go forward")
forward_btn.triggered.connect(self.web_view.forward)
toolbar.addAction(forward_btn)
# Refresh button
refresh_btn = QAction("Refresh", self)
refresh_btn.setStatusTip("Refresh page")
refresh_btn.triggered.connect(self.web_view.reload)
toolbar.addAction(refresh_btn)
# URL bar
self.url_bar = QLineEdit()
self.url_bar.setPlaceholderText("Enter URL")
self.url_bar.returnPressed.connect(self.navigate_to_url)
toolbar.addWidget(self.url_bar)
# Update URL bar when page changes
self.web_view.urlChanged.connect(self.update_url_bar)
# Show status bar
self.statusBar()
def navigate_to_url(self):
url = self.url_bar.text()
if not url.startswith("http"):
url = "http://" + url
self.web_view.setUrl(QUrl(url))
def update_url_bar(self, qurl):
self.url_bar.setText(qurl.toString())
if __name__ == "__main__":
app = QApplication(sys.argv)
browser = Browser()
browser.show()
sys.exit(app.exec_())