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 07 February 2024 13:27

pyjoubert
Participant assidu
Lieu: Lyon
Date d'inscription: 21 Mar 2006
Messages: 330

QGIS/Python: Interface multi-boites

Bonjour,

Je suis entrain de tester des boites de dialogua qui s'appellent entre elles.
Sur internet, j'ai trouvé une exemple en vidéo qui permet le construction de celles-ci via QtDesigner.
La 1ère boite est de type MainWindow et les deux autres de type QDialog

Ci joint un zip contenant les différents fichiers

Le fichier appelant est Principal.py
La fenêtre principale est décrite dans le fichier Menu.py
Les 2 fenêtres appelées sont  décrites dans le sous-répertoire biblio


Il faut mettre l'arborescence dans C:/temp par exemple et modifier en conséquence la ligne qui met à jour le path

Quand on exécute ce script (Principal.py) via l'éditeur de script de QGIS, on a tout de suite le message ci-dessous alors que le fichier Menu.py est à mon sens au bon endroit

ModuleNotFoundError: No module named 'menu'

Merci de votre aide et bonne journée, PYJ


Fichier(s) joint(s) :
Pour accéder aux fichiers vous devez vous inscrire.

Hors ligne

 

#2 Wed 07 February 2024 15:27

LPlante
Participant occasionnel
Date d'inscription: 17 Nov 2021
Messages: 32

Re: QGIS/Python: Interface multi-boites

Bonjour
Visiblement le fichier menu.py (appelé Menu_QT) devrait etre utilisé dans un import et pas from

Dernière modification par LPlante (Wed 07 February 2024 15:47)

Hors ligne

 

#3 Wed 07 February 2024 16:10

Sylther
Participant actif
Lieu: Mtp
Date d'inscription: 17 May 2016
Messages: 146

Re: QGIS/Python: Interface multi-boites

Bonjour,
Il s'agit d'un problème de casse. L'appel doit se faire avec le bon nom. Ici, ligne 8, Menu avec un M, vu que le *.py s'appelle ainsi avec une majuscule. Mais ce n'est pas le seul problème. Cf. problème de nom de la classe ligne 38 ('Ui_MainWindow' et pas 'Ui_Dialog' ?).
Mais il reste d'autres soucis ensuite.

Est-ce que tu utilises un IDE pour ton code ?

Bonne journée.

Dernière modification par Sylther (Wed 07 February 2024 16:11)

Hors ligne

 

#4 Fri 09 February 2024 06:54

pyjoubert
Participant assidu
Lieu: Lyon
Date d'inscription: 21 Mar 2006
Messages: 330

Re: QGIS/Python: Interface multi-boites

Bonjour;

J'avance petit à petit
J'ai intégré le code dans un plugin sans passer par Plugin Builder.

Je vais donc plus loin maintenant.

Pour répondre à ta question, pour le moment,  j'écrit le code avec un NotePad++

Merci

PYJ

Hors ligne

 

#5 Fri 09 February 2024 17:47

Sylther
Participant actif
Lieu: Mtp
Date d'inscription: 17 May 2016
Messages: 146

Re: QGIS/Python: Interface multi-boites

Hello,
Ah super. Ceci étant, plugin Builder est rudement bien fichu pour avoir un squelette d'extension conforme au bonne pratiques.

Peut-être que tu peux passer à un IDE dédié à python, cela aide bien pour le développement, aussi ?
Complétion, liens entre les différents fichier qui composent ton projet, rappel de la syntaxe des functions, simplification du versionning pour ne citer que ces fonctionalités. Gros gain de productivité en perspective et aussi souvent accentuation dela courbe d'apprentissage !
Tu peux en trouver grand nombre ici : https://www.epsi.fr/5-ide-developpement-python/
Tous ne sont pas FOSS ni gratuit. (perso j'ai un faible pour pyCharm community edition).

Bonne journée.

Hors ligne

 

#6 Sat 10 February 2024 09:02

pyjoubert
Participant assidu
Lieu: Lyon
Date d'inscription: 21 Mar 2006
Messages: 330

Re: QGIS/Python: Interface multi-boites

Bonjour,

Je passe en effet d'habitude par Plugin Builder, mais là comme j'ai besoin de plusieurs IHM qui s'appellent les unes avec les autres, je ne savais pas faire

Dans ce cas, si je fais le squelette avec Plugin Builder, la 1ère boite ne sera pas une MainWindow Je choisi alors une autre ?

Pour l'IDE, je vais vois ce que donne pyCharrm

Merci à toi et bonne journée

PY

Hors ligne

 

#7 Sat 10 February 2024 10:48

YoLecomte
Participant assidu
Lieu: Epinal
Date d'inscription: 7 Jul 2015
Messages: 239

Re: QGIS/Python: Interface multi-boites

Bonjour,

Vous pouvez instancier et afficher des fenêtres ou n'importe quelle interface QT (QDialog, QDockWidget, QMainWindow,...) depuis n'importe quelle autres interface en réagissant à un évènement (Pressed sur un QButton dans votre cas si je me référè à votre code).
Vous pouvez donc parfaitement partir d'un squelette généré avec le Plugin Builder qui servira de point d'entrée puis créer vos autres interfaces avec Qt Designer et les charger depuis votre code au moment opportun.
Pour les charger, vous pouvez au choix:
- Compiler le fichier .ui créer avec Qt designer en fichier python avec l'utilitaire Qt (pyuic5).
- Charger dynamiquement la classe de votre interface grâce au module uic et notamment loadUi (voir cet exemple https://nitratine.net/blog/post/how-to- … ython-gui/)

Une autre solution et de définir vos interfaces directement dans le code en décrivant votre interface directement en python. Pour des interfaces simples ceci est viable mais dés que vous allez créer des interfaces un peu riche le code à produire sera important et peu lisible.

Souvent, une approche mixte est utilisée. On définit les éléments de l'interface dans QT Designer, on les stocke dans un fichier .ui qui est chargé au moment opportun puis après ce chargement, on rend l'interface dynamique en interagissant avec en python en fonction du contexte (cacher des éléments, se connecter à des signaux, ajouter des éléments,...).

Pour la question de l'IDE, en effet Pycharm est la référence pour le développement python et je vous conseille de partir la dessus. Cependant, on lui reproche souvent sa lourdeur et sa consommation de ressources. Visual Studio Code est multilangage, beaucoup plus léger et présente les mêmes fonctionnalités mais la configuration est un peu moins user friendly.  Le choix de l'IDE c'est vraiment une question personnelle smile.

Lorsque vous allez utilisez PyCharm il vous faudra configurer l'interpréteur python associé à votre projet. Pour travailler sur des plugins QGIS sous windows cette configuration est un peu particulière, voici une ressource qui pourra vous aider: https://gis.stackexchange.com/a/428577

Hors ligne

 

Pied de page des forums

Powered by FluxBB