Annonce
Pour sa 21ème année, l’association GeoRezo a toujours besoin de vous !
10€ = 1 mois de frais bancaires ; 15€ = 12 mois de nom de domaine ; 30€ = 1 semaine de location des serveurs …
Retrouver nos membres bienfaiteurs
#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