w3resource

Python PyQt menu example

Python PyQt Connecting Signals to Slots: Exercise-14 with Solution

Write a Python program that creates an application with a menu. When we choose menu items, a specific message appears.

From doc.qt.io:

QApplication Class: The QApplication class manages the GUI application's control flow and main settings.

QMainWindow Class: The QMainWindow class provides a main application window.

QMenu Class: The QMenu class provides a menu widget for use in menu bars, context menus, and other popup menus.

QAction Class: The QAction class provides an abstraction for user commands that can be added to different user interface components.

Sample Solution:

Python Code:

import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QMenu, QAction

class MenuApp(QMainWindow):
    def __init__(self):
        super().__init__()

        self.setWindowTitle("Menu Example")
        self.setGeometry(100, 100, 400, 200)  # (x, y, width, height)

        # Create a menu bar
        menu_bar = self.menuBar()

        # Create a menu called "File"
        file_menu = QMenu("File", self)
        menu_bar.addMenu(file_menu)

        # Create actions for menu items
        open_action = QAction("Open", self)
        save_action = QAction("Save", self)
        exit_action = QAction("Exit", self)

        # Connect the menu actions to functions that do something
        open_action.triggered.connect(self.open_file)
        save_action.triggered.connect(self.save_file)
        exit_action.triggered.connect(self.close)

        # Add the actions to the "File" menu
        file_menu.addAction(open_action)
        file_menu.addAction(save_action)
        file_menu.addSeparator()  # Adds a separator line in the menu
        file_menu.addAction(exit_action)

    def open_file(self):
        print("Open file menu item selected")

    def save_file(self):
        print("Save file menu item selected")

def main():
    app = QApplication(sys.argv)
    window = MenuApp()
    window.show()
    sys.exit(app.exec_())

if __name__ == "__main__":
    main()

Explanation:

In the exercise above -

  • Import the necessary modules from PyQt5.
  • Create a custom "QMainWindow" class named "MenuApp" that builds the main application window.
  • Set up a menu bar and created a menu called "File."
  • Inside the "File" menu, we create actions for menu items like "Open," "Save," and "Exit."
  • Connect each menu action to a function (self.open_file, self.save_file, self.close) that does something when the menu items are selected.
  • In the main() function, we create the PyQt application, instantiate the "MenuApp" class, and show the main window.

Output:

Open file menu item selected
Save file menu item selected

PyQt: Python PyQt menu example. Part-1
PyQt: Python PyQt menu example. Part-2

Flowchart:

Flowchart: Python PyQt menu example.
Flowchart: Python PyQt menu example.

Python Code Editor:


Previous: Python PyQt checkbox example.
Next: Python PyQt keyboard shortcut example.

What is the difficulty level of this exercise?

Test your Programming skills with w3resource's quiz.



Follow us on Facebook and Twitter for latest update.