A File menu was added with
F key as a Alt-shortcut.
Once we have the menu object, we can can add
to it to create the entries. We create two basic entries here
for opening and saving HTML files (from a local disk). These both require
custom slot method.
file_menu = self.menuBar().addMenu("&File") open_file_action = QAction( QIcon( os.path.join('icons','disk--arrow.png') ), "Open file...", self) open_file_action.setStatusTip("Open from file") open_file_action.triggered.connect( self.open_file ) file_menu.addAction(open_file_action) save_file_action = QAction( QIcon( os.path.join('icons','disk--pencil.png') ), "Save Page As...", self) save_file_action.setStatusTip("Save current page to file") save_file_action.triggered.connect( self.save_file ) file_menu.addAction(save_file_action) ```` The slot method for opening a file uses the built-in `QFileDialog.getOpenFileName()` method to create a file-open dialog and get a name. We restrict the names by default to files matching `\*.htm` or `*.html`. We read the file into a variable `html` using standard Python functions, then use `.setHtml()` to load the HTML into the browser. ```python def open_file(self): filename, _ = QFileDialog.getOpenFileName(self, "Open file", "", "Hypertext Markup Language (*.htm *.html);;" "All files (*.*)") if filename: with open(filename, 'r') as f: html = f.read() self.browser.setHtml( html ) self.urlbar.setText( filename )
Similarly to save the HTML from the current page,
we use the built-in
get a filename. However, this time we get the HTML
self.browser.page().toHtml() and write it
to the selected filename. Again we use standard
Python functions for the file handler.
def save_file(self): filename, _ = QFileDialog.getSaveFileName(self, "Save Page As", "", "Hypertext Markup Language (*.htm *html);;" "All files (*.*)") if filename: html = self.browser.page().toHtml() with open(filename, 'w') as f: f.write(html)
Now we have the basic file operations in place. In the next part we'll next improve the interface further by adding a custom Help & About dialog to inform our users.
Create GUI Applications with Python & Qt (PySide2 Edition)
The easy way to create desktop applications
Create GUI Applications is the complete guide to building GUI applications with Python. Starting from the very basics of creating a desktop window this book takes you on a tour of the key features of PyQt5 you can use to build real-life applications.
To support developers in [[ countryRegion ]] I give a [[ localizedDiscount[couponCode] ]]% discount on all books and courses.
[[ activeDiscount.description ]] I'm giving a [[ activeDiscount.discount ]]% discount on all books and courses.