CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

[Python] POO et interface graphique

MrGreez94
MrGreez94
Niveau 10
25 juillet 2016 à 12:06:38

Bonjour :)

Je suis actuellement en train d'implémenter d'ajouter une interface graphique à mon projet python et je suis actuellement confronté à une problématique que je n'ai pas réussi à résoudre.

Il y a deux fichiers en jeu:
- main.py (le fichier principal qui décrit le processus et instancie les objets nécessaire au programme)
- ui.py (le fichier qui décrit la classe de mon interface graphique)

A un moment dans le programme, l'utilisateur est amené à sélectionner un élement d'une liste depuis l'UI, ce qui a pour conséquence d'afficher les détails de l'élément sélectionné. Le programme correspondant à l'UI étant totalement indépendant, l'UI n'a pas accès à ces informations, qui sont contenues dans un objet instancié dans le main. C'est là que mon questionnement survient.

Comment, à l'issue d'un évenement sur l'interface graphique (donc asynchrone) je peux "avertir" le main d'actualiser les informations et afficher les bonnes, tout en gardant l'UI totalement indépendant et sans rendre l'objet contenant les informations global ?

Je me suis tourné un peu vers les signaux qui me semblaient être la meilleure solution mais après quelques essais, impossible de les faire marcher :(
Du coup j'aurais aimé avoir un avis avant de tomber dans la facilité ou d'utiliser une méthode assez vilaine.

TheRealMarco
TheRealMarco
Niveau 13
25 juillet 2016 à 12:18:41

Connais-tu les events (évènements) ? Je pense que c'est ce qu'il te faut.

MrGreez94
MrGreez94
Niveau 10
25 juillet 2016 à 13:59:10

J'arrive déjà à capter l’événement de changement d'élément dans la liste, j'ai de même créé ma fonction handler, déclarée dans le programme ui.py et qui n'a donc pas accès au dit objet.

Les seules solutions que je vois c'est de créer la fonction handler dans main.py, soit rendre l'objet global. Dans les deux cas je ne trouve pas que ce soit des solutions satisfaisantes et je suis quasi persuadé que c'est un problème commun et qu'il y a une bien meilleure solution :(

LoloBzh56
LoloBzh56
Niveau 10
26 juillet 2016 à 12:13:58

En C# je sais que ce genre de chose est gérée par le data binding.

En python tu peux en quelque sorte simuler un data binding. Regarde ce lien si ça peut t'aider : http://stackoverflow.com/questions/29019742/data-binding-in-python

MrGreez94
MrGreez94
Niveau 10
26 juillet 2016 à 19:18:30

Je ne connaissais pas, ça a l'air intéressant !

Merci :-)

Sous forums
  • Aide à l'achat Mac
  • Macintosh
  • Création de Jeux
  • Programmation
  • Création de sites web
  • Linux
  • Internet
  • Steam Deck
  • Hardware
La vidéo du moment