Web Browser Example

The example demonstrates the power and simplicity offered by Qt for Python to developers. It uses several PySide6 submodules to offer a fluid and modern-looking UI that is apt for a web browser. The application offers the following features:

  • Tab-based browsing experience using QTabWidget.

  • Download manager using a QProgressBar and QWebEngineDownloadItem.

  • Bookmark manager using QTreeView.

../_images/tabbedbrowser.png

The application’s code is organized in several parts for ease of maintenance. For example, DownloadWidget provides a widget to track progress of a download item. In the following sections, these different parts are discussed briefly to help you understand the Python code behind them a little better.

BookmarkWidget or bookmarkwidget.py

This widget docks to the left of the main window by default. It inherits QTreeView and loads a default set of bookmarks using a QStandardItemModel. The model is populated at startup from a JSON file, which is updated when you add or remove bookmarks from the tree view.

DownloadWidget or downloadwidget.py

The widget tracks progress of the download item. It inherits QProgressBar to display progress of the QWebEngineDownloadItem instance, and offers a context-menu with actions such as Launch, Show in folder, Cancel, and Remove.

BrowserTabWidget or browsertabwidget.py

The widget includes a QWebEngineView to enable viewing web content. It docks to the right of BookmarkWidget in the main window.

MainWindow or main.py

This is the parent window that collates all the other widgets together to offer the complete package.

Try running the example to explore it further.