Nous utilisons des cookies pour vous garantir la meilleure expérience sur notre site. Si vous continuez à utiliser ce dernier, nous considèrerons que vous acceptez l'utilisation des cookies. J'ai compris ! ou En savoir plus !.
banniere

Le portail francophone de la géomatique


Toujours pas inscrit ? Mot de passe oublié ?
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

Annonce

Printemps des cartes 2024

#1 Wed 02 December 2020 16:26

fassa222
Participant occasionnel
Date d'inscription: 18 Jan 2012
Messages: 36

QGIS 3.10: Ajouter un plugin dans un sous menu existant

Bonjour,

J'ai un ensemble de Plugins que je dois restructurer suivant différents sous menus dans un Menu Global. Pour l'instant, j'ai deux plugins mais a chaque fois il me recrée le menu alors que je le deuxième plugin intègre directement sur le menu Global que le première plugin a Créer. Il y a meme quelqu'un qui a déjà réussi mais il n'a pas donner d'exemple. Son poste est sous le nom "QGIS 3.10: Ajouter un plugin dans un sous menu existant" https://georezo.net/forum/viewtopic.php?id=120725

Voici un exemple de mon code:

Code:

class ClassGeneraleMenu:
    def __init__(self, iface):
        self.iface = iface
        # Declaration de mon Menu Global en premier lieu
        self.ambition_menu = QtWidgets.QMenu('MenuGlobal')

    # Function qui me crée des sous menus dans ma MenuGlobal
    def atrqgis_add_submenu(self, submenu):
        self.ambition_menu.addMenu(submenu)

    # Function iniGuit
    def initGui(self):
        # Insertion du Menu dans la barre menu de Qgis
        self.iface.mainWindow().menuBar().insertMenu(self.iface.firstRightStandardMenu().menuAction(),self.ambition_menu)

        # Sous Menu Par projet
        # Myprojet Sous Menu
        self.adn_menu = QtWidgets.QMenu(QCoreApplication.translate("atrqgis", "&Myprojet"))
        self.atrqgis_add_submenu(self.adn_menu)
        
        # CONTROLE DESIGN Submenu
        self.controle_design = self.adn_menu.addMenu('Contrôle')

        # Ajout des actions dans dans la fenetre execution
        icon = QIcon(os.path.dirname(__file__) + "/icons/import.png")
        self.animate_lines_action = QtWidgets.QAction(icon, "A.1.1 Import de données", self.iface.mainWindow())
        self.animate_lines_action.triggered.connect(self.baba_fonc)
        
        # Ajout de l'action dans la CONTROLE DESIGN Submenu
        self.controle_design.addAction(self.animate_lines_action)

Cet exemple est idem pour tous mes Plugins, sauf que je veux qu'a chaque Plugin d'insérer dans un menu Global existant existant.

CDT

Dernière modification par fassa222 (Wed 02 December 2020 16:41)

Hors ligne

 

#2 Mon 07 December 2020 17:36

Njoy
Participant actif
Lieu: Lyon
Date d'inscription: 29 Nov 2018
Messages: 89

Re: QGIS 3.10: Ajouter un plugin dans un sous menu existant

Bonjour,

Je fais ainsi :

Code:

    
    def __init__(self, iface):

        # Save reference to the QGIS interface
        self.iface = iface
        # initialize plugin directory
        self.plugin_dir = os.path.dirname(__file__)
        # initialize locale
        locale = QSettings().value('locale/userLocale')[0:2]
        locale_path = os.path.join(
            self.plugin_dir,
            'i18n',
            'FTTH_easy_{}.qm'.format(locale))

        if os.path.exists(locale_path):
            self.translator = QTranslator()
            self.translator.load(locale_path)
            QCoreApplication.installTranslator(self.translator)

        # Declare instance attributes
        self.actions = []
        self.menu = self.tr(u'&FTTH_easy') [b]#ICI LE NOM DE TON MENU PRINCIPAL[/b]

        # Check if plugin was started the first time in current QGIS session
        # Must be set in initGui() to survive plugin reloads
        self.first_start = None

    # noinspection PyMethodMayBeStatic
    def tr(self, message):

        # noinspection PyTypeChecker,PyArgumentList,PyCallByClass
        return QCoreApplication.translate('FTTH_easy', message)



def add_action(
        self,
        icon_path,
        text,
        callback,
        enabled_flag=True,
        add_to_menu=True,
        add_to_toolbar=True,
        status_tip=None,
        whats_this=None,
        parent=None):


        icon = QIcon(icon_path)
        action = QAction(icon, text, parent)
        action.triggered.connect(callback)
        action.setEnabled(enabled_flag)

        if status_tip is not None:
            action.setStatusTip(status_tip)

        if whats_this is not None:
            action.setWhatsThis(whats_this)

        if add_to_toolbar:
            self.iface.addToolBarIcon(action)

        if add_to_menu:
            self.iface.addPluginToMenu(
                self.menu,
                action)

        self.actions.append(action)

        return action

    def initGui(self):
        """Create the menu entries and toolbar icons inside the QGIS GUI."""

        icon_path = ':/plugins/FTTH_Etiquettes/icon.png'
        self.add_action(
            icon_path,
            text=self.tr(u'FTTH_easy2'), [b]#ICI LE NOM DE TON SOUS MENU[/b]
            callback=self.run,
            parent=self.iface.mainWindow())

        # will be set False in run()
        self.first_start = True

Dernière modification par Njoy (Mon 07 December 2020 17:37)

Hors ligne

 

#3 Mon 07 December 2020 17:40

Njoy
Participant actif
Lieu: Lyon
Date d'inscription: 29 Nov 2018
Messages: 89

Re: QGIS 3.10: Ajouter un plugin dans un sous menu existant

Fais une recherche dans le code avec "ICI" pour trouver mes commentaires, pas très clair désolé

Hors ligne

 

Pied de page des forums

Powered by FluxBB