Sample plugin packageΒΆ

This example demonstrates a more complex plugin that includes multiple functions callable from a dropdown in the plugins menu.

from pyjamas.rplugins.base import PJSPluginABC

# Useful imports if the plugin requires a sub-menu with multiple options.
from PyQt6 import QtWidgets, QtCore
from functools import partial

# PyJAMAS plugins inherit from the abstract class
# pyjamas.rplugins.base.PJSPluginABC,
# and must implement name and run methods.
# They may also optionally implement a
# build_menu method.
class PJSPlugin(PJSPluginABC):
    # This method returns the name of the menu item used to
    # launch the plugin.
    def name(self) -> str:
        return "Sample plugin package"

   # This method implements the functionality of the plugin.
    def run(self, parameters: dict) -> bool:
        print(parameters['text'])
        self.pjs.statusbar.showMessage(parameters['text'])

        return True

    # This method defines how the plugin sub-menu looks
    # and what options it contains. It does not need to
    # be implemented if there is only one option.
    def build_menu(self):
        parent_menu = QtWidgets.QMenu(self.pjs.menuPlugins)
        parent_menu.setObjectName(self.name())
        parent_menu.setTitle(QtCore.QCoreApplication.translate('PyJAMAS', self.name()))

        self.pjs.addMenuItem(parent_menu, "Print 'Hello my friends!'", None,
                             partial(self.run, {'text': "Hello my friends!"}))
        self.pjs.addMenuItem(parent_menu, "Print 'Howdy y'all!'", None,
                             partial(self.run, {'text': "Howdy y'all!"}))

        self.menu = self.pjs.menuPlugins.addMenu(parent_menu)