Résolue

A quoi bon?

# Interface graphique # PySide

Bonjour! Je ne suis pas certain d'avoir compris l'utilité de créer ce fichier main.py dans lequel on importe la classe Calculator dy fichier python généré par la conversion du fichier ui: est-ce pour permettre de partager les tâches, avec la création de la partie graphique de la calculatrice directement via Designer d'une part, et l'écriture de la logique de la calculatrice dans le fichier main d'autre part?
Je pose cette question parce que, sauf si j'ai loupé un morceau, on ne peut pas faire le chemin inverse, c'est-à-dire modifier le fichier main.py et que cela se répercute dans Designer? (En effet, quand on exécute le fichier main, cela génère la calculatrice avec les modifications, mais juste dans une fenêtre ouverte par le Terminal, pas dans l'interface de Designer).
Le truc id"éal en fait, ce sarait qu'on puisse écrire du code directement dans Designer, un peu comme c'est le cas dans l'outil de VBA adossé à Excel (on ne se moque pas 😜) où on peut basculer de l'interface graphique au code et vice-versa. Ca, ce n'est pas possible avec Designer? Merci d'avance (et pardon si cette question est confuse, c'est probablement que je le suis moi-même!)

Thibault houdon

Mentor

Salut Simon

Alors tu as bien perçu la distinction entre les rôles du main.py et des fichiers .ui. Lorsque tu travailles avec QtDesigner et que tu crées une interface, tu produis effectivement un fichier .ui qui décrit l'interface graphique. Ce fichier peut être converti en code Python à l'aide de pyuic, l'outil de conversion fourni avec PySide, ou directement chargé dans ton code avec uic.loadUi (mais je déconseille, j'en parle dans la formation il me semble).

Le fichier main.py sert à séparer la logique de ton application de sa représentation graphique. C'est un concept très important en programmation appelé séparation des préoccupations (le fameux S de SOLID : Separation of concerns). Cela signifie que tu construis ton interface avec Designer, sans te soucier de la logique qui la sous-tend, et tu écris ensuite le code qui définit le comportement de cette interface dans main.py ou d'autres modules Python que tu importes.

Mais le chemin inverse n'existe pas vraiment : on ne peut pas modifier le code dans main.py et s'attendre à voir ces changements se répercuter dans QtDesigner. Le fichier .ui ne stocke que la structure de l'interface, pas la logique sous-jacente. Cela dit, certaines modifications dans le main.py, comme les textes des labels ou la visibilité des widgets, vont affecter l'interface utilisateur lors de l'exécution, mais pas la structure sauvegardée dans le fichier .ui.

En ce qui concerne l'écriture de code directement dans QtDesigner, malheureusement, ce n'est pas possible. QtDesigner est uniquement un outil de création de l'interface.

Merci pour cette réponse détaillée Thibault, c'est très clair maintenant!

Inscris-toi

(c'est gratuit !)

Inscris-toi

Tu dois créer un compte pour participer aux discussions.

Créer un compte

Rechercher sur le site

Formulaire de contact

Inscris-toi à Docstring

Pour commencer ton apprentissage.

Tu as déjà un compte ? Connecte-toi.